Yii2 Unable to verify your data submission 錯誤-CSRF

Yii2 功能非常強大,組件化編程很高大上,全棧編程很容易,但我以爲平常的開發中仍是有很大一部分人會去手寫表單之類的,爲了配合前端的工做,或者懶得再去學這套堪比一門新語言的組件語法....html

Yii2默認是對錶單採起 CSRF 驗證的,近些年 CSRF 也愈來愈被人們所在乎,它比 XSS 更陰險更精明,有興趣的能夠百度下網絡安全編程方面的相關知識,這裏就再也不累述了。前端

若是是本身手寫的表單,且沒有關閉 Yii2 自身的 CSRF 驗證的話,就會出現 「Unable to verify your data submission」  的錯誤提示,而網上千篇一概的都是教你如何關閉 CSRF 驗證,我也是呵呵了,居心何在?安全編程要貫徹到底,若是你不想過幾年被搞網絡安全的擠下去麼。有幾篇教你如何使本身的表單符合 CSRF 驗證,但都是 Yii 版本的,組件的寫法都與如今的 Yii2 大有不一樣編程

下面給出正確的表單寫法安全

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>FormValidate</title>
</head>
<body>
    <div>
        <form method="post" action="">
            <input type="text" name="username">
            <input type="submit" value="submit">
            <!-- _csrf -->
            <input type="hidden"
                name="<?= \Yii::$app->request->csrfParam; ?>"
                value="<?= \Yii::$app->request->getCsrfToken();?>">
        </form>
    </div>
</body>
</html>

 

即在表單中添加一個 網絡

name : app

\Yii::$app->request->csrfParam;

 

value:組件化

\Yii::$app->request->getCsrfToken();

 

的input hidden元素便可post

輸出 request 組件其實就能看到一個公共的成員屬性  spa

public $csrfParam = '_csrf';

 

固然你直接寫也能夠code

相關文章
相關標籤/搜索