中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

茶陵县| 灌阳县| 庄河市| 孟津县| 双辽市| 望奎县| 邳州市| 固始县| 沽源县| 周宁县| 山东| 韩城市| 平邑县| 静安区| 鄯善县| 江达县| 闽侯县| 玛纳斯县| 扎鲁特旗| 金乡县| 共和县| 崇阳县| 拉萨市| 苏州市| 新野县| 塔城市| 镇江市| 垦利县| 泸州市| 阿坝县| 固原市| 错那县| 蒙山县| 东乡县| 托克托县| 齐齐哈尔市| 旺苍县| 丹寨县| 新津县| 宝应县| 高碑店市|