Laravel安全

Laravel安全

安全性在设计Web应用程序是非常重要的特性。它确保了网站的用户数据的安全。Laravel提供了各种机制来确保网站的安全。一些特征列出如下-
  • 存储密码 − Laravel提供了一个名为“Hash”类来提供安全Bcrypt散列。密码可以通过以下方式散列。

$password = Hash::make('secret'); 
  • make() 函数将使用一个值作为参数,将返回其哈希值。散列值可以用check()函数进行检查如下所示。

Hash::check('secret', $hashedPassword)
上述函数将返回布尔值。如果密码匹配它将返回true,否则返回false。
  • 认证用户-在Laravel其他主要安全功能是验证用户和执行某些操作。Laravel使得此任务更容易,要做到这一点可以通过使用Auth::attempt()方法。

if (Auth::attempt(array('email' => $email, 'password' => $password))) {
   return Redirect::intended('home');
}
Auth::attempt()方法将凭证作为参数,并验证存储在数据库中的这些凭据,如果它是匹配将返回true,否则返回 false。
  • CSRF保护/跨站请求伪造 (XSS) − 攻击者把客户端的JavaScript代码放页面在其他用户查看的页面时,跨站点脚本(XSS)攻击发生。 为了避免这种攻击,千万不要相信任何用户提交的数据并转义任何危险的字符。在Blade模板应该使用双括号语法({{$value}}),

    如果使用 {!! $value !!} 语法,数据会其原始格式来显示所以一定是安全的。
  • 避免SQL注入- SQL注入漏洞当应用程序插入任意和未经过滤的用户输入的SQL查询时存在的。默认情况下,Laravel会保护免受这种类型的攻击,因为在后台查询生成器使用PHP数据对象(PDO)类。 PDO使用prepared语句,它允许您安全地传递任何参数,而无需转义它们。

  • Cookies - 默认情况下安全 − Laravel使用Cookie类使得它很容易创建,读取和过期的cookies。在Laravel所有的Cookie是自动签名和加密。这意味着,如果它们被篡改,Laravel将自动丢弃它们。这也表示你将不能够从客户端使用 JavaScript 读取。

  • 交换敏感数据时强制HTTPS − HTTPS防止在同一网络上拦截私人信息,如会话变量,并使用受害者这些信息来登录。