Cakephp安全

Har*_*M V 9 security xss cakephp xsl-fo csrf

我是Web应用程序安全性的新手.我正在Cakephp中开发一个应用程序,我的一个朋友告诉我有关跨站点请求伪造(CSRF)和跨站点脚本(XSS)攻击等等,不确定还有多少.

我需要一些帮助,以了解如何使Cakephp保护我的Web应用程序对抗这些.我们预算很低,目前我们不能雇用安全顾问.我们仍在开发应用程序,并计划在本月底发布.所以想要照顾可以帮助我不被黑客攻击的最初的东西;)

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.

  • "非常不幸的是,CakePHP教程包含了将未转义的字符串回显到HTML以外的HTML帮助文本的错误做法"我同意 - 这种方式很多人都不知道这真的很糟糕. (3认同)