我最近开始在一家拥有网站的公司工作。以前的程序员在输入字段上没有使用任何保护。现在我需要做点什么。该网站包含数百个PHP文件,仅包含在两个文件中(index.php和main.php - 第一个用于访问用户,第二个用于注册)。有没有办法通过仅包含在这两个文件中的代码来保护所有文件中的所有字段?否则,我必须编辑每个PHP文件,这个文件需要一个月。
答案 0 :(得分:3)
这取决于保护意味着什么。
如果用户输入直接传递给未参数化的SQL语句,则由于SQL注入,您将遇到一组问题。如果输入直接写回HTML输出,则由于XSS等原因会出现另一组问题。
任何快速全局修复(例如heximal的建议)都可能导致错误,例如数据库或网页中的双重编码数据。当然,这可能是一个较小的邪恶,而不是让您的网站被黑客攻陷。另请注意,只需转义'
字符即可。
最后,针对这些漏洞的正确解决方案是将其修复到易受攻击的组件中。应使用带参数化语句的适当数据库抽象层来修复SQL注入。在构造HTML视图时,HTML输出应该是HTML编码的,最好是使用默认情况下执行此操作的视图引擎。这并不是说输入不应该被验证,而是验证不能单独存在。