安全

如何选择laravel的身份认证系统

最近经常有人问如何使用laravel的身份认证功能,因为laravel的身份认证方式比较多,laravel的作者最近专门写了一文章来解释说明,以下为译文:

laravel认证生态系统概述

Laravel提供了一些与身份验证相关的软件包。在继续之前,我们将回顾Laravel中的常规身份验证生态系统,并讨论每个软件包的预期目的。

首先,请考虑身份验证的工作原理。使用网络浏览器时,用户将通过登录表单提供其用户名和密码。如果这些凭据正确,则应用程序将在用户的会话中存储有关经过身份验证的用户的信息。发布给浏览器的cookie包含会话ID,以便对应用程序的后续请求可以将用户与正确的会话相关联。接收到会话cookie后,应用程序将基于会话ID检索会话数据,注意身份验证信息已存储在会话中,并将用户视为“已身份验证”。

当远程服务需要进行身份验证才能访问API时,通常不使用cookie,因为没有Web浏览器。而是,远程服务根据每个请求将API令牌发送到API。应用程序可以对照有效API令牌表验证传入令牌,并“认证”与该API令牌相关联的用户正在执行的请求。…

                

通过短信发送的一次性验证码 的标准发布

GitHub 最近宣布,它正在采用SMS一次性密码(例如,两因素身份验证代码)格式的标准草案,以帮助阻止网络钓鱼攻击。

短信注意事项

在开始详细介绍之前,需要注意的是,使用一次性短信作为SMS的安全性比使用诸如Authy之类的专用应用程序的安全性低,因为该方法容易受到SIM交换攻击的攻击。它们也很不方便 -有时消息会花一些时间才能到达,如果用户不在手机范围内或在出国旅行时更换了SIM卡,则根本不会收到消息。

也就是说,通过SMS一次性获得密码很重要-它们是传递2FA代码的最常见方式,因为它们可以与用户已经拥有的技术一起使用。下载专用于管理2FA代码的专用应用程序超出了许多用户的范围。

这个怎么运作

标准背后的想法是预定义的SMS(文本消息)格式,如下所示:

什么是CSRF令牌,它如何工作?

许多现代的Web框架(如Laravel或Play框架)都具有内置支持,可保护您的Web应用程序免受跨站点请求伪造  (CSRF)的侵害  。这是一件好事,但是并不是每个开发人员何时以及如何使用它都总是不清楚。在本文中,我尝试给出一些(希望)易于理解的答案。

在潜入之前,让我们提醒自己一些规则和限制:…

    

php设置samesite cookie,有效防止CSRF

php设置samesite cookie,支持所有PHP版本。

PHP 7.3 的setcookie函数已经支持samesite属性,但对于7.3以下版本,可以用以下函数代替:

<?php
$options = [
    'expires' => time()+18400,
    'domain' => 'localhost',
    'httponly' => false,
    'samesite' => 'Lax',
    'secure' => false,
    'path' => '/'
  ];

function samesite_setcookie($name, $value, array $options)
{
    $header = 'Set-Cookie:';
    $header .= rawurlencode($name)