django框架防止XSS注入的方法分析


Posted in Python onJune 21, 2019

本文实例讲述了django框架防止XSS注入的方法。分享给大家供大家参考,具体如下:

XSS 是常见的跨站脚本攻击,而且这种类型的错误很不容易被发现或者被开发人员忽视,当然django 框架本身是有这方面的考虑的,比如在模板中自动开启了 escape, 但事实上,我在改版我的 个人博客 yihaomen.duapp.com 时,在评论框的地方没有用到富文本编辑器,而是让用户自己输入内容,如果某个用户输入了如下类似的东西:

这是我的评论,

<script>alert('xss injection');</script>

而我在模板中是这样使用的 {{comment|safe}}, 由于使用了 safe filter ,所以这里会直接弹出对话框出来。这就是XSS 注入了。真实的项目中是不允许出现这样的情况的,用safe 的目的是为了更好的显示html标签等。所以要解决的方式是在后台接收到内容的时候,进行转义处理,特别是 "< > " 这些符号,以及 单引号,双引号等,最初,我自己写了一些替换方法。比如

def checkxss(content):
  checked_content = content
  checked_content = re.sub(r"&", "&", checked_content,0,re.I)
  checked_content = re.sub(r"'", "´", checked_content,0,re.I)
  checked_content = re.sub(r'""', """, checked_content,0,re.I)
  checked_content = re.sub(r"<", "<", checked_content,0,re.I)
  checked_content = re.sub(r">", ">", checked_content,0,re.I)
  checked_content = re.sub(r"/", "/", checked_content,0,re.I)

当然在后台处理掉这些,然后保存到数据库,再次打开的时候,在模板用|safe 过滤器,就会还原成原来的样子,确实没错。但问题是我自己画蛇添足了。因为django 自身有一系列的方法。这些方法在 django.utils.html  package中。我用这几个写一个测试.

'''
Created on 2013-11-21
@author: yihaomen.com
'''
from django.utils.html import escape, strip_tags, remove_tags
html_content = """
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <script>alert("test")</script>
  <title>yihaomen.com test</title>
  <link href="/static/css/style.css" rel="external nofollow" rel="stylesheet" type="text/css" />
  </head>
  <body>
   content
  </body>
  </html>
"""
def escape_html(html):
  return escape(html);
def stript_all_tags(html):
  return strip_tags(html)
def remove_part_tags(html,tags):
  return remove_tags(html, tags)
if __name__ == '__main__':
  print "====escape all tags======"
  print escape_html(html_content)
  print "====remove all tags======"
  print strip_tags(html_content)
  print "===remove part tags.====="
  print remove_part_tags(html_content,"script html body")

当然还有更多的方法,可以查看django的代码。 以上的方法可以看到 django 可以很方便的 eacape 所有html标签,也可以部分 escape html标签,还可以只保留内容等。确实很方便。

由此可见用 django.utils.html 里面的东西,足够应付 xss 注入.

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
Oct 08 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
解决Python pandas df 写入excel 出现的问题
Jul 04 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
pyshp创建shp点文件的方法
Dec 31 Python
python读出当前时间精度到秒的代码
Jul 05 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 Python
python框架flask表单实现详解
Nov 04 Python
Django Auth用户认证组件实现代码
Oct 13 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
Python包管理工具pip的15 个使用小技巧
May 17 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 #Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 #Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 #Python
django框架使用orm实现批量更新数据的方法
Jun 21 #Python
python字典改变value值方法总结
Jun 21 #Python
python如何以表格形式打印输出的方法示例
Jun 21 #Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 #Python
You might like
PHP中图片等比缩放的实例
2013/03/24 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
js arguments.callee的应用代码
2009/05/07 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
python实现外卖信息管理系统
2018/01/11 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
python无序链表删除重复项的方法
2020/01/17 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
大学毕业生通用自荐信范文
2013/10/31 职场文书
经理职责范文
2013/11/08 职场文书
竟聘演讲稿范文
2013/12/31 职场文书
认识深刻的检讨书
2014/02/16 职场文书
团日活动总结报告
2014/06/25 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书