【发布时间】:2014-10-16 19:50:07
【问题描述】:
我有这个简单的 mysql 查询:
INSERT INTO table (col1, col2) VALUES ('1', '2')
col1 和 col2 是另一个表的外键,因此 col1 和 col2 的任何值都必须存在于另一个表中,否则不会插入该行。
在这种情况下是否还有 SQL 注入的风险?如果我从 PHP POST 收到这些 col 值,我是否还需要在插入数据库之前绑定它们,或者它们已经是安全的,因为 cols 是外键?
【问题讨论】:
-
只要使用正确的“准备好的”查询,很多“问题”就会消失。如果您总是使用带有“动态”参数的“准备”查询,那么您将是“安全的”。您必须“验证”所有输入,但如果“不常用的东西”进入数据库,则它不是“有害的”。首先,我并不担心“效率”。
-
唯一可以接受的方法是,如果您知道输入中不可能包含恶意代码。不幸的是,如果您依赖最终用户的输入,甚至是现有的数据库值,那么您实际上无法知道这一点。出于所有实际目的,始终假设最终用户没有做好事,并且不要相信他们的任何输入都是干净的。
标签: mysql sql security sql-injection