laravel之伪造跨站请求保护CSRF实现机制
2024-08-29 08:10:22
Laravel 提供了简单的方法使你的应用免受 跨站请求伪造 (CSRF) 的袭击。跨站请求伪造是一种恶意的攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令。
Laravel 为每个活跃用户的 Session 自动生成一个 CSRF 令牌。该令牌用来核实应用接收到的请求是通过身份验证的用户出于本意发送的。
任何情况下在你的应用程序中定义 HTML 表单时都应该包含 CSRF 令牌隐藏域,这样 CSRF 保护中间件才可以验证请求。
CSRF代码实现逻辑:
位置:vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
获取session中XSRF-TOKEN的值与提交token比较
code:
/**
* Determine if the session and input CSRF tokens match.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function tokensMatch($request)
{
$token = $this->getTokenFromRequest($request); return is_string($request->session()->token()) &&
is_string($token) &&
hash_equals($request->session()->token(), $token);
} /**
* Get the CSRF token from the request.
*
* @param \Illuminate\Http\Request $request
* @return string
*/
protected function getTokenFromRequest($request)
{
$token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN'); if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
$token = $this->encrypter->decrypt($header);
} return $token;
}
最新文章
- SharePoint 2013 开发教程
- [整理]Matlab之中心平滑滤波
- C#基础02
- 每天一个linux命令(26):du 命令
- 【freemaker】之FreeMakerUtil工具类
- 拜托,这才是“Uber”的正确读法
- 在MAC平台下编译Ngnix ,由于MD5算法不能编译通过 解决办法
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
- switch 与 whille相互套用
- Android_CodeWiki_02
- spring mvc 与 jasper Report集成
- Leetcode题解(22)
- MySQL中需要注意的几点
- hdu 3599(最短路+最大流)
- TCP/IP 传输原理
- rsync配置文件的参数详解
- mac系统中实现vitualBox中访问内网端口
- Castle.MVC框架介绍
- Ubuntu下Qt(Retex)无法输入中文
- jvm(13)-线程安全与锁优化
热门文章
- Jackson 对象与json数据互转工具类JacksonUtil
- Caused by: java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
- [Selenium] 操作新弹出窗口之验证标题和内容
- C++标准编程:虚函数与内联
- 修改cocos2dx 背景颜色
- Java多线程:线程状态以及wait(), notify(), notifyAll()
- E20180403-hm
- hdoj1272 小希的迷宫
- 关于国债的一些计算: 理论TF价格2(缴款日前有付息)
- 洛谷 P2296 寻找道路【bfs+spfa】