tornado cookie安全性
1.cookie伪造
客户端javascript或浏览器插件可以修改cookie
网络传输中也可以截获请求,修改cookie
2.tornado cookie安全验证机制
tornado的set_secure_cookie()和get_secure_cookie()方法可以设置和获取浏览器cookies
tornado应用中设定了cookie_secret参数,set_secure_cookie时会使用cookie_secret参数对值进行HMAC签名,同时会把时间戳加到值中。
get_secure_cookie时会使用cookie_secret进行签名校验,若签名不符,或者时间戳太旧,就会认为cookie已经篡改,方法返回None。
cookie_secret参数可以保证cookie的值只能由服务器端修改。

3.httponly,secure
用户也可能修改客户端生成的cookie,这会导致提权攻击。如cookie中存放了商品剩余数量,我们应防止用户修改这个数值。tornado提供了httponly,secure两个属性可以防止这种攻击。
httponly:浏览器javascript不能访问cookie值。
secure:浏览器只能通过SSL连接传递cookie
使用方法如下:
self.set_cookie('foo', 'bar', httponly=True, secure=True)
4.XSRF攻击
关于XSRF攻击的详细介绍可见CSRF攻击
我在文章中也提到了防范XSRF攻击的两种方法
tornado中采用了第一种方法,用户访问网站时,会生成一个令牌,以cookie形式存放在浏览器客户端。每次请求时,会带上这个令牌,服务端进行校验,校验通过,则为有效请求。
使用示例如下:
settings = {
"cookie_secret": "bZJc2sWbQLKos6GkHn/VB9oXwQt8S0R0kRvJ5/xJ89E=",
"xsrf_cookies": True
}
application = tornado.web.Application([
(r'/', MainHandler),
(r'/purchase', PurchaseHandler),
], **settings)
post请求时,需要带上这个cookie令牌值
<form action="/purchase" method="POST">
{% raw xsrf_form_html() %}
<input type="text" name="title" />
<input type="text" name="quantity" />
<input type="submit" value="Check Out" />
</form>
ajax请求时,示例代码如下:
function getCookie(name) {
var c = document.cookie.match("\\b" + name + "=([^;]*)\\b");
return c ? c[1] : undefined;
}
jQuery.postJSON = function(url, data, callback) {
data._xsrf = getCookie("_xsrf");
jQuery.ajax({
url: url,
data: jQuery.param(data),
dataType: "json",
type: "POST",
success: callback
});
}
tornado cookie安全性的更多相关文章
- 关于Cookie安全性设置的那些事
一.标题:关于Cookie安全性设置的那些事 副标:httponly属性和secure属性解析 二.引言 经常有看到XSS跨站脚本攻击窃取cookie案例,修复方案是有httponly.今天写出来倒腾 ...
- Tornado 的安全性保障机制Cookie XSRF跨站请求伪造阻断 &用户验证机制
6.1 Cookie 对于RequestHandler,除了在第二章中讲到的之外,还提供了操作cookie的方法. 设置/获取 注意:Cookie 在浏览器调试时, 只有在第一次访问该网站的时候获取到 ...
- Web.config文件中关于Cookie安全性的考量和设置
cookie的内容,如图所示: HTTP response header: Set-Cookie: <name>=<value>[; <Max-Age>=<a ...
- 使用HttpOnly提升Cookie安全性
在介绍HttpOnly之前,我想跟大家聊聊Cookie及XSS. 随着B/S的普及,我们平时上网都是依赖于http协议完成,而Http是无状态的,即同一个会话的连续两个请求互相不了解,他们由最 ...
- Tornado cookie 笔记
set_cookie()/get_cookie()的使用 def get(self): # self.get_cookie()获取cookie if not self.get_cookie('name ...
- [转]使用HttpOnly提升Cookie安全性
原文:https://www.cnblogs.com/zlhff/p/5477943.html 在介绍HttpOnly之前,我想跟大家聊聊Cookie及XSS. 随着B/S的普及,我们平时上网都是依赖 ...
- JavaScript 操作 Cookie
转自作者:聂微东出处:http://www.cnblogs.com/Darren_code/ 什么是 Cookie “cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器 ...
- javascrip中cookie的使用详细分析
JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J ...
- js获取cookie中存储的值
最近看了试卷题目发现自己会的十分的匮乏, 第一题就把自己难住了,知道有这个东西,但是实际上没有操作过. ========================================= cookie ...
随机推荐
- OpenCV 视频处理框架
OpenCV 本身集成了 FFmpeg,因此对于视频是有解码和编码功能的.尽管其效率在本人看来还不能跟未被封装的FFmpeg相提并论,然用其来对视频进行解码得到图像,然后对图像进行处理并将得到的图像又 ...
- 笔试题之xml
XML部分 1.xml有哪些解析技术?区别是什么? 答:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害.这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM ...
- Deep compression code
https://github.com/songhan/SqueezeNet-Deep-Compression import sys import os import numpy as np impor ...
- 自研DCI网络路由交换协议DCIP-白牌交换机时代的企业网络
一转眼从听华为3Com的路由交换课程到如今已经13年有余了,依稀记得第一节课的时候我带着老婆去听的课(老婆是日语系的.那时还是女朋友,并不懂网络,仅仅是跟着我去上课的).抢了个头排,讲师宋岩老师提问了 ...
- GitLab Notification Emails
GitLab has a notification system in place to notify a user of events that are important for the work ...
- linux 浏览查看文件more,less,head,tail,cat,tac,od,nl命令使用简介
参考:linux 基本命令详解 cat,tac,nl,more,less,head,tail,od 命令more,less,head,tail,cat,tac,od,nl等是是使用Linux系统常用的 ...
- HDU 1517 A Multiplication Game (博弈)
A Multiplication Game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- python学习笔记013——推导式
1 推导式简介 推导式comprehensions(又称解析式),是Python的一种独有特性. 推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 推导式有三种形式: 1)列表推导式 (li ...
- Form_Form Builder的常用变量(概念)
2014-12-30 Created By BaoXinjian
- PLSQL_Oracle基本概念总结(汇总)
2014-08-16 Created By BaoXinjian