在参数中发送表名是否安全

时间:2015-02-12 19:31:51

标签: php class security pdo

我是PDO的新手,正在创建一个类。我想尽可能使代码尽可能干净,并尽可能使用几页。我打算将列名和表名作为参数发送:

   function get($column, $table, $where) {
        global $db;
        $query = 'SELECT '.$column.' FROM '.$table.' WHERE '.$where.'';
        try {
            $statement = $db->prepare($query);
            $statement->execute();
            $result = $statement->fetchAll();
            $statement->closeCursor();
            return $result;
        } catch (PDOException $e) {
            $error_message = $e->getMessage();
            display_db_error($error_message);
        }
   } 

它工作正常,但我想知道如何安全。

1 个答案:

答案 0 :(得分:3)

您的代码不安全。除非您正在测试$ column,$ table和$,否则代码中的其他位置,这对于sql注入来说已经成熟。我不会做你打算做的事情。这是一条疯狂的错误和错误之路。允许用户控制访问哪个表显然是应用程序设计中的一个主要缺陷。