最近Laravel 4进行了更新以解决一个安全问题:他们的代码中有一个 CSRF 漏洞。
这是旧代码:
if (Session::token() != Input::get('_token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
这是他们的解决方法(注意!==):
if (Session::token() !== Input::get('_token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
==我了解 PHP和PHP之间的区别===(基本上后者更严格,因为它检查类型),并且我了解 CSRF 是什么以及如何解决它,但我不完全了解为什么这种特定情况会产生漏洞,或者如何攻击者会利用它。