繁体   English   中英

如何清理查询?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM