有没有人遇到过用于保护联系表单的防弹函数/类(自制或原生)?
请参见:
更好的选择是使用:
HTML Purifier是一个用PHP编写的符合标准的HTML过滤器库。HTML Purifier不仅会使用经过彻底审核、安全但允许的白名单删除所有恶意代码(更为人所知的是XSS),而且还会确保您的文档符合标准,这只有通过全面了解W3C规范才能实现。由于当前缺乏或不安全的HTML过滤器,您是否已经厌倦了使用BBCode?是否拥有所见即所得编辑器,但从未能够使用它?是否正在寻找高质量、符合标准、开源的组件来构建您的应用程序?那么HTML Purifier就是为您而设计的!
我建议使用OWASP 企业安全API,它是一组访问器,可以根据数据类型过滤用户输入。另一个补充安全层是Web应用程序防火墙(WAF),例如PHP-IDS或mod_security。 WAF将阻止许多不同类型的攻击到达您的应用程序。这可能是您正在寻找的,因为它是一个“即插即用”的解决方案,无需修改您的应用程序。
一个输入验证库会有所帮助,但你应该记住并不存在万能的解决方案,你不能调用一个例程或安装一些软件就期望所有漏洞都会消失。输入验证漏洞高度依赖于数据的使用方式。例如,LFI、XSS、CRLF和SQL注入都有不同的控制字符,因此需要进行过滤/转义/编码等处理。如果你想构建一个真正坚固的PHP应用程序,那么你必须阅读PHPSec Library。
预防SQL注入最好的方法是使用参数化查询,并使用像PHP's PDO这样的库。这样,无论数据来自何处,你都可以确信查询免疫于SQL注入。
此外,还有一些漏洞与输入验证无关。CSRF和加密违规都是很好的例子。你还应该阅读OWASP Top 10。
我认为这不是一个特殊情况,只要在与数据库交互时始终使用参数化查询。
由于使用PHP/mysqli设置参数化查询可能会很繁琐,因此我强烈推荐Rob Poyntz的Codesense_mysqi class。它是一个简洁的包装器,隐藏了大部分的繁琐操作。