亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

laravel中表單偽造與CSRF保護的示例分析

發布時間:2020-12-15 10:17:33 來源:億速云 閱讀:275 作者:小新 欄目:編程語言

這篇文章主要介紹laravel中表單偽造與CSRF保護的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

我們知道,目前最流行的API設計規范就是restFul API設計了。restful有五種常見的HTTP方法,即:get、post、put、patch及delete。使用html表單非常容易構造get或post方法,但是另外三種方法卻不支持。但是在laravel中,你可以通過表單偽造技術來使用上述的其他三種方法。

準備工作

首先我們要把準備工作做好。我們需要創建兩個路由:一個表單路由,一個接受表單的路由。

// 表單頁
Route::get('form', function () {
    return view('form');
});

// 接受表單請求
Route::any('getform', function () {
    return \Illuminate\Support\Facades\Request::method();
});

剛開始,我們弄一個最簡單的get請求表單,內容如下:

<form method="get" action="/getform">
    <input type="submit" value="sub" />
</form>

點擊提交按鈕后,瀏覽器出現'GET',表示get請求成功發送并被接受。

CSRF保護

然后,我們換成post方法,然后刷新點擊提交按鈕,看會出現設么情況。你會發現出現“page expired”,狀態碼為419的錯誤。laravel為什么接受不了post請求?這里就要引出laravel的默認CSRF保護機制了。

laravel為了防止被跨站請求偽造攻擊,提供了CSRF令牌保護,所以,除了get方法請求外的所有方法,讀需要在表單里加上CSRF令牌,如下:

<input type="hidden" name="_token" value="{{csrf_token()}}">

它還有一種簡寫方法,如下:

@csrf

關閉CSRF保護功能

一般不建議關閉整站CSRF功能,想要關閉非常簡單,只需將Kernel.php文件中的

\App\Http\Middleware\VerifyCsrfToken::class

這行注釋即可。

CSRF 白名單

經常我們需要設置一組不需要CSRF保護的URL,比如對第三方提供的API接口,我們希望所有對外的API接口都不需要CSRF保護。那么,可以通過CSRF白名單的功能,設置白名單在app/Http/Middleware/VerifyCsrfToken.php文件操作。如下:

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        /* 這里是白名單列表 */
        'http://example.com/api/*',
        'api/*',
        'a/b/*'
    ];
}

注意:為方便測試,當測試環境時,csrf功能會自動關閉

表單偽造

學完了CSRF保護機制后,我們來看看如何進行表單偽造。想要偽造表單也非常的簡單,只需要在表單里添加

<input type="hidden" name="_method" value="PUT">

或簡寫成

@method('PUT')

下面是一個偽造put請求的表單

<form method="post" action="/getform">
    @csrf
    @method('PUT')
    <input type="submit" value="sub" />
</form>

以上是“laravel中表單偽造與CSRF保護的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉定区| 漾濞| 分宜县| 桂林市| 巴东县| 日土县| 山丹县| 乌鲁木齐县| 焦作市| 高密市| 瑞安市| 甘德县| 绵阳市| 江永县| 黄浦区| 大名县| 大宁县| 蒲江县| 榆社县| 成都市| 阿克| 政和县| 台东市| 菏泽市| 观塘区| 呼玛县| 石台县| 贵溪市| 新余市| 右玉县| 饶阳县| 裕民县| 旬邑县| 邵东县| 永丰县| 普兰店市| 潼关县| 璧山县| 许昌市| 灵武市| 贵州省|