CakePHP 2.3.6 发布
CakePHP 核心团队很高兴地宣布 CakePHP 2.3.6[1] 立即可用。2.3.6 是 2.3 发布分支的 bug 修复版本。自 2.3.5 发布以来,已经进行了 64 次提交,并解决了 17 个问题。
CakePHP 核心团队很高兴地宣布 CakePHP 2.3.6[1] 立即可用。2.3.6 是 2.3 发布分支的 bug 修复版本。自 2.3.5 发布以来,已经进行了 64 次提交,并解决了 17 个问题。以下列出了您可以期待的更改的简短列表
- CakeTime 中的日期时间比较现在更准确了。
- FormHelper 现在可以在保存多条记录的表单上正确地将字段标记为错误类。
- Controller::$modelClass 现在在组件初始化之前设置。
- CakeEmail 的文件读取功能现在可以在类之外使用。
- 提高了电子邮件换行与日语消息的兼容性。
- HtmlHelper::tag() 现在在 $tag 为假时返回内容。
- 使用 ControllerTestCase::testAction() 时,现在启用了模拟组件。
- 使用 HtmlHelper::script() 和 HtmlHelper::scriptBlock() 时,现在可以设置 type 属性。
- 传递空数组不再重置 SmtpTransport 的配置。
- 使用 SimpleXmlElement 解析 XML 错误现在抛出 XmlException。
- FormHelper 现在在多选元素中禁用选项。
- TranslateBehavior 现在在更新/插入行时始终使用 $name 而不是别名。
- 在遥远的将来,cookie 过期时间现在可以在 32 位系统上正常工作。
- FileEngine 现在可以正确地清除具有不同前缀的组。
安全披露
CakePHP 最近发布了 3 个安全版本。为了保持开放透明,并信守我们之前的承诺,以下是对每个问题的更详细描述。
身份验证表单
身份验证表单容易受到通过添加额外的 POST 数据进行的查询操作的攻击。没有通过 SecurityComponent 保护的表单容易受到攻击。如果在登录表单中,您有
<input name=”data[User][username]” type=”text”><br /><input name=”data[User][password]” type=”password”>
在提交表单之前,攻击者可以将以下 HTML 添加到表单中
<input name=”data[User][username][OR][id LIKE]” value=”1” type=”hidden”><input name=”data[User][username][OR][username LIKE]” value=”%admin%” type=”hidden”>
当表单提交时,用于登录用户的 $conditions 将具有以下值
"OR" => array(
"id like" => 1,
"username like" => "%admin%"
)
这个问题是在添加对 blowfish 身份验证的支持时意外引入的。该问题通过将身份验证时任何非标量条件视为失败来解决。这个问题在 此提交 c327bd 中得到了纠正。感谢 Magnus Andersson 报告问题并提供补丁。
分页 SQL 注入
通过操作用于对分页 URL 进行排序的模型别名,可以执行任意 SQL。这个问题影响了 1.2、1.3 和 2.x 系列的发布,并且是在 5 年前意外引入的。PaginatorComponent 仅验证字段名称,但没有验证模型别名。这意味着别名中包含的任何 SQL 都将被内联为 SQL。一个示例攻击 URL 将如下所示
http://yourtest.com/users/index/sort:id%20LIMIT%2010;delete%20FROM%20%60contacts%60;.id
上面的 URL 将 DELETE 查询注入到分页请求中,由于它是排序键,因此将在没有清理的情况下执行。这个问题通过在 此提交 6017db 中忽略用户数据并使用已知的模型别名来修复。感谢 ‘Ahmad’ 在 lighthouse 上报告这个问题并帮助 CakePHP 团队找到解决方案。
通过 webroot 的跨站脚本攻击
通过操纵 URL,攻击者可以生成一个错误页面,该页面允许执行任意 javascript。请求对象上的 webroot 属性被错误地信任为安全,即使它包含用户输入。一个示例攻击可能会如下所示
http://example.com/index.php/%3E%22%3E%3Cscript%3Ealert%28%27hehe%27%29;%3C/script%3E%3Clink%20href=%22HTTP/1.0%22%3C
解决这个问题的方法是在创建请求对象时对用户提供的 webroot 属性进行 url 编码。这使得生成的 URL 在所有正常情况下安全使用。对此的修复已应用于 此提交 db6dd1。
我要感谢报告安全问题并帮助解决问题的人。我还要感谢所有帮助 CakePHP 继续运行的贡献者。如果没有你们,就不会有 CakePHP。下载打包版本[2]。
链接