bob*_*nce 17
没有(也可能不是)一个工具可以部署,然后再也不用考虑安全性了.部署像CakePHP这样的"反XSS"黑客Sanitize::clean
将通过阻止有效输入进入用户的方式,同时仍然不一定使应用程序安全.输入过滤黑客充其量只是一种混淆措施,而不是安全漏洞的修复.
要拥有安全的Web应用程序,您必须从头开始编写安全的Web应用程序.这意味着,主要是在将字符串从一个上下文放入另一个上下文时注意细节.特别是:
任何时候你将字符串写入HTML文本内容或属性值,HTML-escape it(htmlspecialchars()
)以避免HTML注入导致XSS.这不仅仅是用户输入可能包含攻击的问题,而是将纯文本放入HTML的正确方法.
在使用HTML帮助程序方法的地方,默认情况下它们应该处理这些元素的HTML转义(除非你关闭escape
); 非常不幸的是,CakePHP教程包含了将非转义字符串回显到HTML帮助文本之外的文本的不良做法.
每次使用字符串值创建SQL查询时,都要对其进行SQL转义(使用适当的数据库函数mysql_real_escape_string
).
如果您正在使用CakePHP的ORM而不是编写自己的SQL,则不必担心这一点.
避免使用用户输入(例如文件上载名称)来命名文件系统上的文件(生成干净的唯一ID)或作为system()
命令的任何部分.
包括安全组件以添加表单提交令牌方案,该方案将阻止CakePHP生成的表单上的XSRF.