laravel

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

Route::get('/', function () {
abort(402, 'Unauthorized action.');//自定义网页错误
});//get方法路由器
/*Route::match(['get', 'post'], '/', ['as'=>'nihao',function(){

}]);//Route:;match与Route::any一样*/
//Route::get("/{name}",function($name){
// return $name;
//});
/*Route::get("/{name}",['as'=>'a','uses'=>'nihaoController@Nihao']);//路由方法与命名路由*/
//Route::get("/{num}",function($num){
//return $num;
//})->where("num","[0-9]+");一个正则用到的
//Route::get("/{num}/{username}",function($num,$username){
// dump($num,$username);
//})->where(array('num'=>"[0-9]+","username"=>'[a-z]+'));多个正则限定参数,用数组表示
/*$url = route('profile',['id'==1]);
命名路由与跳转 数组转餐
$redirect = redirect()->route('profile');*/
/*Route::group(['namespace'=>'nihao'],function(){
// Route::get("/{name}",['as'=>'a','uses'=>'nihaoController@Nihao']);//路由方法与命名路由
// 控制器在 "App\Http\Controllers\Admin" 命名空间下

});*/
/*Route::group(['prefix'=>'default'],function(){
Route::get('/', function () {
return view('welcome');
// 匹配 "/default/" URL

});
});*/
/*Laravel自动为每一个被应用管理的有效用户Session生成一个CSRF“令牌”,该令牌用于验证授权用户和发起请求者是否是同一个人。想要生成包含CSRF令牌的隐藏输入字段,可以使用帮助函数csrf_field来实现:

<?php echo csrf_field(); */?><!--
帮助函数csrf_field生成如下HTML:

<input type="hidden" name="_token" value="<?php /*echo csrf_token(); */?>">
当然还可以使用Blade模板引擎提供的方式:

{!! csrf_field() !!}
-->
5.2 从CSRF保护中排除URIs

有时候我们想要从CSRF保护中排除一些URIs,比如,如果你在使用你可以通过在VerifyCsrfToken中间件中将要排除的URIs添加到$except属性:

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     *从CSRF验证中排除的URL
     *
     * @var array
     */
    protected $except = [
        'stripe/*',
    ];}
5.3 X-CSRF-Token

除了将CSRF令牌作为一个POST参数进行检查,Laravel的VerifyCsrfToken中间件还会检查X-CSRF-TOKEN请求头,你可以将令牌保存在”meta”标签中:

<meta name="csrf-token" content="{{ csrf_token() }}">

创建完这个meta标签后,就可以在js库如jQuery中添加该令牌到所有请求头,这为基于AJAX的应用提供了简单、方便的方式来避免CSRF攻击:

$.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
});
5.4 X-XSRF-Token

Laravel还将CSRF令牌保存到了名为XSRF-TOKEN的cookie中,你可以使用该cookie值来设置X-XSRF-TOKEN请求头。一些JavaScript框架,比如Angular,将会为你自动进行设置,基本上你不太会手动设置这个值。

6、表单方法伪造

HTML表单不支持PUTPATCH或者DELETE动作,因此,当定义被HTML表单调用的PUTPATCHDELETE路由时,需要添加一个隐藏的_method字段到给表单中,其值被用作HTTP请求方法名:

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

7、抛出有两者方法手动从路由触发404错误。

 

第一种,使用帮助函数abortabort函数会抛出一个指定状态码的Symfony\Component\HttpFoundation\Exception\HttpException

abort(404);

第二种,手动抛出Symfony\Component\HttpKernel\Exception\NotFoundHttpException.的实例。

转载于:https://www.cnblogs.com/lovesg/p/5140804.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值