如果不深入底层平台,是否有任何有效的方法可以保护 Web 服务器免受 SQL 注入?是否有任何特殊的 Apache 模块或配置?fail2ban 是否适合此处?
答案1
Apache 不会受到 SQL 注入,因为它不是数据库。
如果您想要保护 Apache 运行的、进而调用数据库的应用程序,您可以在其前面放置一个 WAF(Web 应用程序防火墙)。
另一种方法是使用 Apache 中的 mod_security 和在 post/gets 中查找 SQL 的规则集。
Fail2ban 的用处非常有限,因为它会扫描日志文件以查找暴力攻击的迹象。SQL 注入通常不会在日志中显示出来,即使日志被扩展以显示此信息,它们也不太可能有太大用处,因为它们会在处理请求后才拾取请求。
答案2
SQL 注入有据可查。修复你的应用程序,不一定是你的 Web 服务器。
CWE-89 对 SQL 注入进行了详细分类。请注意,参数化或使用合适的持久性库等缓解措施尚处于开发阶段。部署后,WAF 样式的过滤器能做的事情非常有限。
OWASP 拥有关于如何正确开发应用程序的实用资源首先避免 SQL 注入。
MITRE ATT&ACK 将其归类为面向公众的应用程序漏洞并列出了缓解措施中的软件更新和应用程序隔离。
答案3
应在应用程序中防止 SQL 注入(使用参数化查询、转义用户输入、使用存储过程等)。其他缓解 SQL 注入的方法包括使用 Apache 的 mod_security 或使用 Cloudflare 等服务。
答案4
过去,我们习惯于在应用程序中对输入进行清理,以免它们进入数据库。也许现在情况“不同”了。这是 11 年前的一篇帖子,最近很活跃:https://stackoverflow.com/questions/129677/how-can-i-sanitize-user-input-with-php