zoukankan      html  css  js  c++  java
  • Asp.Net MVC和webapi CSRF防攻击ajax使用方法

    一、MVC提交

    视图

    @using (Html.BeginForm())
        {
            @Html.AntiForgeryToken()
            <p>
                <strong><em>*</em>姓名:</strong><input type="text" id="name" name="name" />
            </p>
            <p>
                <strong><em>*</em>年龄:</strong><input type="text" id="age" name="age" />
            </p>
            <p>
                <input type="submit" value="提交" />
            </p>
        }

    控制器

            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult PostAdd(FormCollection FromValue)
            {
            //
            }        

    二、ajax+mvc提交

    js

    $("form").submit(function () {
                    //var token = $("input[name='__RequestVerificationToken']").val();
                    var token = $('@Html.AntiForgeryToken()').val();
                    var postData = { id: 123, name: "张三", __RequestVerificationToken: token };
                    $.ajax({
                        url: '/api/Test/PostData/666',
                        type: "post",
                        data: postData,
                        success: function (res) {
                            console.log(res)
                        },
                        error: function () {
                            console.log("错误")
                        }
                    })
                    return false;
                })

    控制台

    [ValidateAntiForgeryToken]
            public string PostData(string id,string name)
            {
                string res = "id==" + id + ",name==" + name;
                return res;
            }

    三、ajax+webapi

    js

    $("form").submit(function () {
                    var postData = { id: 123, name: "李四"};
                    $.ajax({
                        url: '/api/Test/PostData/666',
                        headers: {'RequestVerificationToken': '@ApiValidateAntiForgeryToken.GenerateAntiForgeryTokenForHeader()'},
                        type: "post",
                        contentType: 'application/json',
                        data: JSON.stringify(postData),
                        success: function (res) {
                            console.log(res)
                        },
                        error: function () {
                            console.log("错误")
                        }
                    })
                    return false;
                })

    webapi

    [HttpPost]
            [ApiValidateAntiForgeryToken]
            public string PostData(dynamic obj)
            {
                string res = "id===" + obj.id + ",name===" + obj.name+",ref="+Request.Headers.Referrer.Host;
                return res;
            }
    //ApiValidateAntiForgeryToken是自定义过滤器

    //成功一定有方法,失败一定有原因。
  • 相关阅读:
    Java中swing常用控件背景设置透明的方法
    SpringMVC工作原理
    关于spring框架工作原理
    Java-JFrame窗体美化方式
    Java swing GUI窗口美化
    Java-Swing是什么?
    SSM+Redis+Layui前端框架实现验证码的发送
    SSM+Redis+Layui实现注册功能
    SSM+Layui实现模拟登录功能
    SSM+layui分页(了解98%)
  • 原文地址:https://www.cnblogs.com/webapi/p/15384192.html
Copyright © 2011-2022 走看看