asm*_*smo 9 t-sql security sql-injection
我已经看到SQL注入字符串通常是这样构造的:
' ; DROP DATABASE db --
因此,如果我不允许在我的应用程序输入中使用分号,这是否100%防止任何SQL注入攻击?
Ode*_*ded 10
使用参数化查询(或存储过程)并避免像瘟疫一样的动态SQL.
我建议使用内置的库函数,而不是尝试编写自己的反注入代码.
;即使应该使用(例如,作为VARCHAR或CHAR参数传递的一部分,它是合法的),一个天真的实现将被剥离.您最终必须编写自己的SQL解析器才能接受/拒绝查询.
;
您可以在此处阅读有关动态SQL及其呈现(和解决)的问题的更多信息.
Ral*_*ton 9
不,它不会阻止SQL注入攻击.无论何时在客户端动态构建SQL,或者在存储过程中使用EXEC,都存在风险.
参数化查询是获取查询输入的首选方法.
Gum*_*mbo 5
不,它没有\xe2\x80\x99t。您刚刚展示了一个 SQL 注入示例。但还有更多,一切都取决于您插入数据的上下文。
除此之外,它\xe2\x80\x99不是导致此问题的分号,而是\'提前结束字符串声明的分号。正确编码您的输入数据以防止 SQL 注入。
\'
归档时间:
14 年,3 月 前
查看次数:
5794 次
最近记录:
11 年,8 月 前