Csrf 及ajax的csrf 请求

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#验证码
import tornado.ioloop
import tornado.web
class CrsfHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render("crsf.html")
    def post(self, *args, **kwargs):
        self.write("csrf.post")

settings = {
    "xsrf_cookies": True,
}
class CheckCodeHandler(tornado.web.RequestHandler):
    def get(self):
        import io
        import check_code
        mstream = io.BytesIO()
        # 创建图片 写入验证码
        img, code = check_code.create_validate_code()
        # 图片对象写入到mstream
        img.save(mstream, "GIF")
        # self.session["CheckCode"] = code
        print(mstream.getvalue())
        self.write(mstream.getvalue())

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("index.html",)

application = tornado.web.Application([
    (r"/index", MainHandler),
    #(r"/check_code", CheckCodeHandler),
    (r"/crsf", CrsfHandler),

],**settings)

if __name__ == "__main__":
    application.listen(5555)
    tornado.ioloop.IOLoop.instance().start()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/crsf" method="post">

      {% raw xsrf_form_html() %}

    <p><input name="name" value=""></p>
    <p><input name="pwd" value=""></p>

   <p>
       <input name="valide" value="" placeholder="验证码">
       <input type="submit" value="submit" >
   </p>

</form>
<script type="text/javascript">

        function ChangeCode() {
            var code = document.getElementById(‘imgCode‘);
            code.src += ‘?‘;
        }
 </script>
</body>
</html>

Ajax使用时,本质上就是去获取本地的cookie,携带cookie再来发送请求

function getCookie(name) {
    var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
    return r ? r[1] : undefined;
}

jQuery.postJSON = function(url, args, callback) {
    args._xsrf = getCookie("_xsrf");
    $.ajax({url: url, data: $.param(args), dataType: "text", type: "POST",
        success: function(response) {
        callback(eval("(" + response + ")"));
    }});
};
时间: 2024-11-04 09:17:26

Csrf 及ajax的csrf 请求的相关文章

CSRF之Ajax请求

A:Ajax提交数据是,携带的CSRF在data中: <form method="POST" action="/csrf.html"> {% csrf_token %} <input id="user" type="text" name="user" /> <input type="submit" value="提交"/> <

Django框架 之 基于Ajax中csrf跨站请求伪造

ajax中csrf跨站请求伪造 方式一 1 2 3 $.ajaxSetup({     data: {csrfmiddlewaretoken: '{{ csrf_token }}' }, }); 方式二 1 2 3 4 5 <form> {% csrf_token %} </form><br><br><br>$.ajax({<br>...<br>data:{ "csrfmiddlewaretoken":

第二百七十一节,Tornado框架-CSRF防止跨站post请求伪造

Tornado框架-CSRF防止跨站post请求伪造 CSRF是什么 CSRF是用来在post请求时做请求验证的,防止跨站post请求伪造 当用户访问一个表单页面时,会自动在表单添加一个隐藏的input标签,name="_xsrf",value="等于一个密串" 当用户post请求提交数据时,会将_xsrf的密串提交到后台,后台会判断这个密串存在就允许提交数据,否则不允许提交 进行CSRF验证只需要两步 1.在框架配置字典里开启CSRF验证,开启后会自动接收post

Preventing CSRF With Ajax

https://stackoverflow.com/a/24394578/3782855 You don't need the ValidationHttpRequestWrapper solution since MVC 4. According to this link. Put the token in the headers. Create a filter. Put the attribute on your method. Here is my solution: var token

$.ajax 跨域请求 Web Api

WepApi确实方便好用,没有配置文件,一个apicontroller直接可以干活了.但今天用$.ajax跨域请求的时候总是获取不到数据,用fiddler一看确实抓到了数据,但回到$.ajax函数中,直接触发了error,没有触发success,即使状态码是200.用apiclient或者浏览器直接访问都是ok的.搜罗一番.最终在这篇文章上面找到答案 .http://code.msdn.microsoft.com/windowsdesktop/Implementing-CORS-support-

解决 Ajax 发送 post 请求出现 403 Forbidden 的三种方式

众所周知前端向后台发送 post 请求时,必须验证 csrf,否则会报错 403 Forbidden.使用 Django Form 表单可以直接在表单里面添加 {% csrf_token %} 即可,要是通过 Ajax 发送请求又该怎么办?下面提供三种解决办法: <ul id="ddd"> <li>1</li> <li>2</li> <li>3</li> </ul> <button i

Ajax发送post请求

//创建Ajax对象(兼容处理) function createXHR() { var xhr = null; if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if(window.ActiveXObject) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } return xhr; } //发送post请求 function request(){ xhr.open('P

Web:AJAX的网络请求

1.通过XMLHttpRequest方式发送请求 (1)前提创建XMLHttpRequest对象: //发送请求 var request; if (window.XMLHttpRequest) { request = new XMLHttpRequest(); }else{ request = new ActiveXObject("Microsoft.XMLHTTP"); } (2)然后通过XMLHttpRequest对象调用open()和send()发送请求: //第一种ajax请求

JQuery的Ajax跨域请求的

JQuery的Ajax跨域请求的(Ajax) 什么是jsonp格式呢?API原文:假设获取的数据文件存放在远程server上(域名不同.也就是跨域获取数据),则须要使用jsonp类型.使用这样的类型的话,会创建一个查询字符串參数 callback=? .这个參数会加在请求的URL后面. server端应当在JSON数据前加上回调函数名.以便完毕一个有效的JSONP请求.意思就是远程服务端须要对返回的数据做下处理,依据client提交的callback的參数,返回一个callback(json)的