[英]How to sanitize the query?
我有这个SQL查询要清理:
SELECT * FROM navigation_$cat ORDER BY parent ASC, prio ASC
问题是我无法尽快获得$ cat,因为它是通过AJAX发送的,并指出需要访问哪个数据库。 如何创建一个比简单地将字符串放在一起更安全的PDO语句?
您可以实施白名单,但另一个选择是使用以下方法检查有效输入:
SHOW TABLES LIKE :tblname
和'navigation_'.$cat
作为参数。 检查这是否恰好返回一个表,并且返回的表与传递的参数完全匹配。
一旦完成,您就知道可以安全地插入查询,因为您已经确定它确实是有效的表名。
话虽这么说,“从一个未知的提前表中动态选择”通常表明您在设计数据库时出错,并且您可能只应该在其中有一个带有category
列的navigation
表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.