一个函数通过参数构建SQL字符串。安全风险?

时间:2011-12-12 08:40:27

标签: sql security

我尽量避免为每次更新或插入编写SQL代码。而是PHP函数接受一些参数(添加或更改,tablename,fields-list)并从中构建SQL。这与使用参数化语句(mysqli)的首选方法类似,但不完全相同。

我创建SQL的方式是否面对黑客大笑?

3 个答案:

答案 0 :(得分:1)

如果允许将任何用户输入添加到SQL查询中,则只会带来安全风险。如果使用源代码中定义的常量参数,则可以正常使用,但来自网站用户的实际值应始终使用绑定参数,并且永远不会直接添加到SQL查询中。

答案 1 :(得分:0)

是的,这是一种安全风险,除非您可以投入大量资源来测试您的滥用/误用功能。

您还应该考虑其他因素。构建动态SQL会降低数据库缓存查询的能力 - 每次调用函数时,查询都将被解析为新查询。这可能会对性能产生重大影响。使用绑定参数不会产生同样的问题,因为数据库可以将参数识别为查询的可变部分。

答案 2 :(得分:0)

哦,是的 - 请参阅Wikipedia和强制性的xkcd reference