仅仅依靠web应用程序防火墙来防止SQL注入是否足够?还是我应该使用其他的技巧?
在与一位朋友的谈话中,他说,我不同意使用web应用程序防火墙就足够了,我的理由是:
发布于 2019-09-05 12:12:43
问题应该从根本上解决,而不是(不充分)用胶带解决。
在您的情况下,问题的根源(SQL注入)是,可以将意外和未经验证的用户输入作为SQL指令注入到SQL语句中。这是由于将字符串与SQL指令连接在一起,加上不受信任的用户输入,并将结果作为受信任的SQL语句处理。
防止这个问题的最简单和最充分的保护是通过消除这个有缺陷的字符串连接来使注入不可能。这可以使用准备好的语句来完成。
如果用户输入是完美的,那么只有验证用户输入也是足够的,但是它通常更复杂,而且通常也不像需要的那样完美。但是仍然应该对用户输入进行验证和标准化,以防止XSS等其他攻击。
如果WAF完全了解您的应用程序所期望的用户输入,那么这种只进行输入验证和规范化的不理想方法也可以由Web应用程序防火墙来完成。要实现这一点,WAF需要完全适应您的应用程序。但是,WAF安装通常只包含针对典型攻击的一般规则,并且没有严格调整到web应用程序的特定实例。而且,即使对应用程序进行了一次调优,在开发人员更改应用程序之后,这种保护可能还不够。
因此,WAF只应作为深度防御的一部分作为附加防御,而不是作为唯一和最终的保护。
发布于 2019-09-08 11:34:03
一个您不了解、没有配置、也没有深入了解它是如何工作的安全控件从来都不是一个有用的控件。如果配置正确,那么效果如何并不重要。
因此,不管控件是什么,在您的情况下,它是一个WAF并不重要,使用您确实可以控制的控件。安全控制不是“只起作用”的神奇子弹。
发布于 2019-09-05 12:13:10
不,WAF很可能不够。它过滤传入的网络流量,并阻止那些看起来像SQL注入的东西,但这一切都发生在流量到达您的应用程序之前。您自己的代码所做的数据/输入操作可以允许/引入漏洞。
此外,如果您的应用程序接受来自传入网络流量以外的源的输入或对来自这些源的数据进行操作,则WAF是不相关的。
您应该确保在系统的每个组件中使用适当的安全预防措施(例如,准备好的SQL语句),而不是仅仅依赖于其他组件(这些组件可能存在,也可能不总是存在,并且可能或不总是按照预期的方式工作)来为您提供缓解。
https://security.stackexchange.com/questions/216595
复制相似问题