【发布时间】:2018-07-23 09:28:55
【问题描述】:
嗯,表名和列名不能用 PDO 中的参数代替。 作为要求,这里不能提及static column name。所以,我使用santize。是否足以防止像bind param方法这样的sql注入。什么是最好的方法?
$id = filter_var($_POST['id'], FILTER_SANITIZE_STRING);
$text = filter_var($_POST['text'], FILTER_SANITIZE_STRING);
$column_name = filter_var($_POST['column_name'], FILTER_SANITIZE_STRING);
$result = $con->query("UPDATE menu SET $column_name='$text' WHERE mid=$id") OR die($con->error);
【问题讨论】:
-
" 像bind param方法这样防止sql注入够吗。" ——一点也不!
-
请记住二阶注入,当数据一旦存储在您的数据库中,在以后的阶段可能是有害的。 portswigger.net/kb/issues/00100210_sql-injection-second-order
标签: php pdo sanitization bindparam