【前端】使用Flask框架探讨HttpOnly
2017-05-30 21:34
369 查看
前言
在学习Web安全中发现一些感觉比较常见又重要的知识,这里就做下笔记。这一片是讲解关于HttpOnly的知识。测试环境
Python 3.5.1Flask 0.11
谷歌浏览器
什么是HttpOnly?
HttpOnly是Cookie的一个属性,让浏览器禁止页面JavaScript访问带有该属性的Cookie。HttpOnly解决的是XSS后的Cookie劫持攻击。如果Cookie设置了HttpOnly,JavaScript将读取不到Cookie值。
Flask中设置带有HttpOnly的Cookie
下面就使用Python的Flask框架探讨HttpOnly的效果from flask import Flask, request, make_response, jsonify app = Flask(__name__) app.config["SESSION_COOKIE_HTTPONLY"] = True @app.route("/") def index(): response=make_response('OK') response.set_cookie('key', 'value', httponly=False) # 设置httponly return response @app.route('/get/') def get(): res = {"key": request.cookies.get("key")} return jsonify(res) @app.route('/js/') def js(): js_test = """ <script> alert(document.cookie); </script> """ return js_test if __name__ == '__main__': app.run()
运行上面的代码后,首先访问
http://127.0.0.1:5000/,再进入「Cookie和网站数据」查看一下Cookie的参数。下面以谷歌浏览器为例。
第一步:进入谷歌浏览器的「设置」,找「隐私设置」的「内容设置」;
第二步:找到「内容设置」中的「所有Cookie和网站数据」按钮;
第三步:查看Cookie。
可以看到,我们的代码
response.set_cookie('key', 'value', httponly=False)已经成功设置了Cookie,并且下面的「脚本可访问」的选项是:「是」。也就是说访问
http://127.0.0.1:5000/js/页面是可以看到相关值的。
下面开始测试httponly的效果。
把有注释「设置httponly」那一行的代码
httponly参数改为
True。
重启Flask,刷新
http://127.0.0.1:5000/,重新进入「所有Cookie和网站数据」页面。可以看到脚本可访问」的选项改变了。
刷新
http://127.0.0.1:5000/js/,发现不能看到之前的值了。
最后访问一下
http://127.0.0.1:5000/get/,可以正常看到:
{ "key": "value" }
这是因为浏览器把Cookie提交上去,由服务器端返回回来的结果。
结语
经过上面的步骤,我们可以知道了设置Cookie的HttpOnly属性可以防止浏览器的JS访问相关Cookie。相关文章推荐
- 【从零开始抱大腿】flask框架,前端输入,后端打印:使用post调用接口,插件postman传递JSON类型。
- 在seam框架下jquery前端技术的使用
- 前端开发者使用JS框架的三个等级
- HTML5 前端框架 jQuery Mobile 使用教程
- 在python的WEB框架Flask中使用多个配置文件的解决方法
- 在python的WEB框架Flask中使用多个配置文件的解决方法
- 谨慎使用iframe框架_HTML基础_前端技术
- 使用Memcached、Spring AOP构建数据库前端缓存框架
- Ubuntu下使用Python+flask+MySQL的架构搭建Web框架
- jquery前端校验框架validate使用笔记
- Crumpet – 使用很简单的响应式前端开发框架
- Javascript MVVM模式前端框架—Knockout 2.1.0系列(2):使用Observable Array(监控数组)
- 使用前端框架Foundation 4来帮助简化响应式设计开发
- 使用前端框架Foundation 4来帮助简化响应式设计开发
- 使用Memcached、Spring AOP构建数据库前端缓存框架
- 使用Memcached、Spring AOP构建数据库前端缓存框架
- 使用前端框架Foundation 4来帮助简化响应式设计开发
- 前端开发者使用JS框架的三个等级
- 使用Memcached、Spring AOP构建数据库前端缓存框架
- 使用Memcached、Spring AOP构建数据库前端缓存框架