SQL 注入 - Web 服务器上的全局过滤器
SQL Injection - global filter on web server
是否可以过滤包含 SQL 注入值的 Web 请求?
有 Web 应用程序防火墙或数据库防火墙试图执行此操作。
您必须定义接受输入的模式,或者定义允许的文字输入列表。
其中一些产品的工作原理是让您 "train" 通过 运行 在您知道没有 SQL 注入攻击的情况下运行您的应用程序,并且它会记录SQL 已知合法的查询。然后关闭训练模式,随后防火墙将阻止任何与其允许的输入列表不匹配的内容。
此解决方案存在的问题:
如果您需要更改您的网络应用程序,您需要重新训练防火墙,然后才能部署您的应用程序。
它将您限制为 运行 SQL 可以与此类列表匹配的查询。如果您的 SQL 是高度可变的(例如,有条件地在 WHERE 子句中执行额外连接或额外条款的动态查询),则很难为允许的内容制定规则。
- 基于防火墙的解决方案无法阻止 SQL 存储过程中发生的注入。
- 它给您一种错误的安全感,诱使您在编写安全代码时松懈。
最终,您最好通过使用查询参数来保护自己免受代码中的 SQL 注入。
这几乎是所有关于 SQL Stack Overflow 注入的问题的答案!
另请参阅我过去关于 Web 应用程序防火墙或数据库防火墙的一些回答:
- How can we prevent SQL-Injection from MySQL?
- How to check for the sanity of sql query in PHP
- How to block SQL injection attacks by filtering the URL parameters in php?
- Writing a database firewall for blocking SQL Injection attacks
是否可以过滤包含 SQL 注入值的 Web 请求?
有 Web 应用程序防火墙或数据库防火墙试图执行此操作。
您必须定义接受输入的模式,或者定义允许的文字输入列表。
其中一些产品的工作原理是让您 "train" 通过 运行 在您知道没有 SQL 注入攻击的情况下运行您的应用程序,并且它会记录SQL 已知合法的查询。然后关闭训练模式,随后防火墙将阻止任何与其允许的输入列表不匹配的内容。
此解决方案存在的问题:
如果您需要更改您的网络应用程序,您需要重新训练防火墙,然后才能部署您的应用程序。
它将您限制为 运行 SQL 可以与此类列表匹配的查询。如果您的 SQL 是高度可变的(例如,有条件地在 WHERE 子句中执行额外连接或额外条款的动态查询),则很难为允许的内容制定规则。
- 基于防火墙的解决方案无法阻止 SQL 存储过程中发生的注入。
- 它给您一种错误的安全感,诱使您在编写安全代码时松懈。
最终,您最好通过使用查询参数来保护自己免受代码中的 SQL 注入。
这几乎是所有关于 SQL Stack Overflow 注入的问题的答案!
另请参阅我过去关于 Web 应用程序防火墙或数据库防火墙的一些回答:
- How can we prevent SQL-Injection from MySQL?
- How to check for the sanity of sql query in PHP
- How to block SQL injection attacks by filtering the URL parameters in php?
- Writing a database firewall for blocking SQL Injection attacks