從Yii2的Request看其CSRF防範策略

2021-07-03 04:05:29 字數 1546 閱讀 2177

先畫一幅流程圖理理思路:

結果呢, 無論是用測試工具postman還是用命令列curl請求總是會得到http400:bad request的錯誤;而如果用web網頁方式get訪問(去除verbfilter的post限制),是正常的

通過帖子下面的帖子找到了問題的所在,是csrf驗證的原因;

因為web網頁訪問的時候form表單中會有對應的乙個隱藏input:_csrf進行了驗證才可以正常進行訪問;

而非網頁訪問方式(不通過web表單)是無法通過csrf驗證的。

而curl訪問方式都沒有用到cookie, 故我認為沒有必要在這裡防範csrf攻擊,暫時用下面的辦法將其禁用。

class

controller

extends \yii\base\controller

public

function

run()

}

3.2.3 yii\helpers\html
終於找到了csrf

public

static

function

beginform

($action = '', $method = 'post', $options = )

... ...

"/>

name="viewport"

content="width=device-width, initial-scale=1">

= html::csrfmetatags() ?>

= html::encode($this->title) ?>

title>

<?php

$this->head() ?>

head>

正好也是在3.2.3 yii\helpers\html中定義的

/**

* generates the meta tags containing csrf token information.

*@return string the generated meta tags

*@see request::enablecsrfvalidation

*/public

static

function

csrfmetatags

() else

}

原始碼請參考:

來個流程圖(手繪版):

從Yii2的Request看其CSRF防範策略

用ajax請求還是用命令列curl請求總是會得到http400 bad request的錯誤,而如果用web網頁方式get訪問 去除verbfilter的post限制 是正常的,是csrf驗證的原因 因為web網頁訪問的時候form表單中會有對應的乙個隱藏input csrf進行了驗證才可以正常進行...

Yii2中request的使用方法

1 普通的get和pst請求 123 get request get 4 等同於 get get 56 id request get id 7 等同於 id isset get id get id null 89 id request get id 1 10 等同於 id isset get id ...

yii2框架 yii2自身的自動載入 三

上一節說完了composer的自動載入,下面我們來說一下yii2自身的自動載入。在我們的入口檔案,例如index.php,如下 comment out the following two lines when deployed to production defined yii debug or d...