大家好,又见面了,我是你们的朋友全栈君。
csrf防护:
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
解决方式:
(1)csrf防护只有在web.php文件中有效。如果你只是添加路由,可以新建一个路由文件。
(2)找到php/Http/Middleware/VerifyCsrfToken.php例子如下:
class VerifyCsrfToken extends BaseVerifier
{
/** * The URIs that should be excluded from CSRF verification. * CSRF【Cross-site request forgery跨站请求伪造】验证时,应排除的URI地址块,形如:'test/login'、'test/*' * @var array */
protected $except = [
'test/*',
];
}
(3)在post方式提交表单的时候,加上laravel自带的全局帮助函数csrf_token。
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
(4)如果进行ajax的post请求的时候并没有提交form,表单,此时我们可以通过在meta中写入一些属性来金星csrf防护。
<head>
<title>Laravel</title>
<meta name="csrf-token" content="{
{ csrf_token() }}">
</head>
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: "{
{url('/')}}",
type: "post",
dataType: "json",
});
(5)解除csrf防护
找到php/Http/Middleware/VerifyCsrfToken.php例子如下:
public function handle($request, Closure $next)
{
// 使用CSRF
return parent::handle($request, $next);
// 禁用CSRF
//return $next($request);
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105888.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...