Laravel - CSRF - 学习/实践

1.应用场景

了解Laravel csrf的使用以及工作原理,以及更多的web攻击方式以及相应的防护措施。

2.学习/操作

1.介绍

跨站请求伪造(CSRF)是一种通过伪装授权用户的请求来攻击授信网站的恶意漏洞。

 

2.学习

1.使用postman/浏览器进行表单请求

code:

Route::get('/form', function(){

    return csrf_field();

    return '<form method="POST" action="/csrf">

            ' . csrf_field() . '

            ...

            </form>';

});


 

Route::post('/csrf', function(Request $request){

    return $request->all();

});

截图: 

Laravel - CSRF - 学习/实践

 

Postman:

Laravel - CSRF - 学习/实践

// Postman 连续请求三次
<input type="hidden" name="_token" value="xtf41lrJQsoAPr7j62EIhB8mZVvHMNckrZuNyZI8">
<input type="hidden" name="_token" value="xtf41lrJQsoAPr7j62EIhB8mZVvHMNckrZuNyZI8">
<input type="hidden" name="_token" value="xtf41lrJQsoAPr7j62EIhB8mZVvHMNckrZuNyZI8">

 

Chrome:

Laravel - CSRF - 学习/实践

// Chrome 连续请求三次
<input type="hidden" name="_token" value="Q6Tx1KHWwwpyK4AJKRgo28GIcL1FaidsXXN03q5e">
<input type="hidden" name="_token" value="Q6Tx1KHWwwpyK4AJKRgo28GIcL1FaidsXXN03q5e">
<input type="hidden" name="_token" value="Q6Tx1KHWwwpyK4AJKRgo28GIcL1FaidsXXN03q5e">

 

 

综上可以看到:

不论使用Postman还是Chrome, 连续请求三次, 返回的结果是相同的 【即value值是不变的】

但是postman与Chrome返回的value并不是相同的, 即csrf_token跟访问会话有关.

 

但是,在经过一段时间后, 就会变化为新的一个csrf_token

Laravel - CSRF - 学习/实践

 

 

 

后续补充

...

3.实践

TBD

 

后续补充

...

3.问题/补充

TBD

4.参考

https://xueyuanjun.com/post/21464  //CSRF 防护

http://ningxiaofa.top/blog/pjwgtbue5f336e767a8da-0  //安全 - 常见web攻击

后续补充

...