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

相关文章
相关标签/搜索