• tornado 之 csrf


    csrf用于防止跨站请求伪造

    启用csrf后,在get访问时分配给客户端一个token,客户端在提交POST时请求时需提交此token才可以正常提交,

    如果没有提交或提交的token值不正确,那么提交后就会被“403: Forbidden”阻止

    使用csrf时,首先在setting中开启使用csrf:

    settings = {
    	'template_path':'views',
    	'static_path':'static',
    	'xsrf_cookies': True,
    }
    

    一、通过form表单的方式来进行POST提交

    在模板的form表单中添加上获取token的输出:

    <form method="post" action="/csrf/">
        {% raw xsrf_form_html() %}
        <p><input type="text" name="username" placeholder="用户名"></p>
        <p><input type="password" name="password" placeholder="密码"></p>
        <p><input type="submit" value="提交"></p>
    </form>
    

    服务端的程序:

    class XcrfHandler(BaseHandler):
        def get(self, *args, **kwargs):
            self.render('login.html')
    
        def post(self, *args, **kwargs):
            self.write('Csrf_POST')
    

     二、使用Ajax进行异步POST提交

    启用了使用csrf后,在get方式浏览的某个页面后,服务端程序会想Cookie中写入token信息

    在使用Ajax进行异步提交时可以通过获取cookie中的token信息来进行提交

        function getCookie(name) {
            var r = document.cookie.match("\b"+name+"=([^:]*)\b");
            return r ? r[1] : undefined;
        }
    
        function ajaxSubmit(){
            $.ajax({
                url: "/csrf/",
                type:'POST',
                data: {id:123, _xsrf:getCookie("_xsrf")},
                success: function(r){
                    console.log(r)
                }
            });
        }
    

      

  • 相关阅读:
    1115:直方图
    1114:白细胞计数
    1114:白细胞计数
    忘记mysql密码后重置密码
    pycharm中无法导入pip安装的包
    win7升级win10
    WIN7 Windows update提示不支持硬件
    getcwd() 和 os.path.realpath () 的区别
    selenium启动chrome时,弹出设置页面:Windows Defender 防病毒要重置您的设置
    ui测试如何检测页面差异
  • 原文地址:https://www.cnblogs.com/crucial/p/6661594.html
Copyright © 2020-2023  润新知