zoukankan      html  css  js  c++  java
  • 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)
                }
            });
        }
    

      

  • 相关阅读:
    python将url转变成二维码图片
    flask使用tablib导出excel数据表
    sql根据时间戳按年月日分组统计
    Django单元测试
    set object is not JSON serializable 解决方式
    Git 版本恢复命令reset
    Flask 中command的使用
    kali安装vmtools失败
    如何清除window上的RDP连接记录
    爬虫背景调研----用python编写网络爬虫(一)
  • 原文地址:https://www.cnblogs.com/crucial/p/6661594.html
Copyright © 2011-2022 走看看