Laravel - 为 WEB 艺术家创造的 PHP 框架。

PHP THAT DOESN'T HURT. CODE HAPPY & ENJOY THE FRESH AIR.

Laravel logo

修复 Laravel 4 的 CSRF 攻击漏洞

以下为 Laravel 官方博客 的原文翻译:

11月7号,Insomnia Security 的 Chris Smith (@chrismsnz) 向 Laravel 开发小组发出了警告:在 Laravel 4 应用中发现了可以绕过 CSRF 校验的方法。

为了尽快修复此漏洞,请将 app/filters.php 文件中的默认 CSRF 路由过滤器修改为如下代码:

Route::filter('csrf', function()
{
    if (Session::token() !== Input::get('_token'))
    {
        throw new Illuminate\Session\TokenMismatchException;
    }
});

注意:上面的代码和原始代码相比,只是将比较操作符由 != 修改为 !== (不仔细看还真是找不到),这样修改之后就可以防止精心伪造的 JSON 请求绕过此过滤器。

如果你的 Laravel 应用中使用到了 CSRF 保护机制,强烈建议修复上述漏洞。


译者注:Laravel 官方已经将此漏洞修复了,所以,如果你是“双十一”之后下载的 Laravel 代码将不受此影响。

此漏洞其实是 PHP 的字符串类型与数字类型比较时,PHP 自动将字符串转换为数字类型导致的,建议认真阅读 PHP 的官方文档:
http://php.net/manual/zh/language.types.string.php#language.types.string.conversion
http://php.net/manual/zh/language.operators.comparison.php

关于作者 王赛
源码面前,了无秘密。