是否可以筛选包含sql值的web请求?
ie3xauqp1#
有web应用程序防火墙或数据库防火墙尝试这样做。必须定义接受输入的模式,或者定义允许的文本输入列表。其中一些产品的工作原理是让您在知道没有sql注入攻击的情况下运行应用程序来“训练”它们,并记录已知合法的sql查询。然后关闭训练模式,随后防火墙将阻止任何与其允许的输入列表不匹配的内容。此解决方案的问题:如果您需要更改web应用程序,则需要在部署应用程序之前重新培训防火墙。它限制您运行可以由这样的列表匹配的sql查询。如果您的sql是高度可变的(例如,动态查询有条件地在where子句中执行额外的连接或额外的条件),那么很难为允许的内容制定规则。基于防火墙的解决方案无法阻止存储过程中发生的sql注入。它给你一种错误的安全感,引诱你在编写安全代码时松懈。最终,您最好通过使用查询参数来保护自己不受代码中sql注入的影响。这是几乎所有关于堆栈溢出上sql注入的问题的答案!另请参阅我过去关于web应用防火墙或数据库防火墙的一些回答:如何防止mysql注入sql?如何在php中检查sql查询的健全性如何在php中通过过滤url参数来阻止sql注入攻击?编写数据库防火墙以阻止sql注入攻击
1条答案
按热度按时间ie3xauqp1#
有web应用程序防火墙或数据库防火墙尝试这样做。
必须定义接受输入的模式,或者定义允许的文本输入列表。
其中一些产品的工作原理是让您在知道没有sql注入攻击的情况下运行应用程序来“训练”它们,并记录已知合法的sql查询。然后关闭训练模式,随后防火墙将阻止任何与其允许的输入列表不匹配的内容。
此解决方案的问题:
如果您需要更改web应用程序,则需要在部署应用程序之前重新培训防火墙。
它限制您运行可以由这样的列表匹配的sql查询。如果您的sql是高度可变的(例如,动态查询有条件地在where子句中执行额外的连接或额外的条件),那么很难为允许的内容制定规则。
基于防火墙的解决方案无法阻止存储过程中发生的sql注入。
它给你一种错误的安全感,引诱你在编写安全代码时松懈。
最终,您最好通过使用查询参数来保护自己不受代码中sql注入的影响。
这是几乎所有关于堆栈溢出上sql注入的问题的答案!
另请参阅我过去关于web应用防火墙或数据库防火墙的一些回答:
如何防止mysql注入sql?
如何在php中检查sql查询的健全性
如何在php中通过过滤url参数来阻止sql注入攻击?
编写数据库防火墙以阻止sql注入攻击