django中模板的html自动转意方法


Posted in Python onMay 27, 2018

一、需求来源:

如果用户在文本框中填了一段<script>alert(xxx);</script>代码,然后我们还保存在了数据库中,下次模板加载数据的时候,将这段代码显示在浏览器,将会弹出一个警告框。因此,这是XSS(跨域脚本)攻击的一种方式,我们肯定不能允许这种事件发生,因此django默认给我们启动了自动转意的功能。将这段代码转换成普通的文本进行展示。

二、如何关闭:

你肯定会问既然自动转意可以关闭XSS漏洞为什么需要关闭呢?原因很简单,如果你数据库中保存了一段可信任的HTML代码,那么你肯定想将他插在页面文档中,这时候你肯定不想被当成字符串处理。这时候你就可以针对某些模块进行关闭,django提供了两种方式进行关闭:

对单独的变量,用safe过滤器为单独的变量关闭自动转意,比如:

这个data将会被转意:{{ data }}
这个data不会被转意:{{ data|safe }}

对模板块,可以使用autoescape进行统一管理,他有两个参数off和on分别用来关闭和打开自动转意,比如以下代码关闭一整段代码的自动转意:

{% autoescape off %}
 name: {{ name }}
 age: {{ age }}
{% endautoescape %}

以下代码先关闭自动转意再打开自动转意功能:

Auto-escaping is on by default. Hello {{ name }}
{% autoescape off %}
 This will not be auto-escaped: {{ data }}.
 Nor this: {{ other_data }}
 {% autoescape on %}
  Auto-escaping applies again: {{ name }}
 {% endautoescape %}
{% endautoescape %}

注意事项:autoescape标签的作用域不仅可以影响到当前模板还可以通过include标签以及block标签影响到其他的模板。这个一定要切记!

三:过滤器参数里的字符串常量的自动转意:

{{ data|default:"no data" }}

分析以上代码,如果视图函数提供了data数据,则会显示data,如果没有提供,则默认会显示no data。如果你要默认显示带有/,<,",',&也不会进行转意,因此如果你要显示3<1这样带有特殊字符的,将对html文档产生结构上的影响。但是你可以通过3<1这种方式,进行转意输出。

以上这篇django中模板的html自动转意方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中pycurl库的用法实例
Sep 30 Python
python实现删除文件与目录的方法
Nov 10 Python
用Python编写生成树状结构的文件目录的脚本的教程
May 04 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
Python向日志输出中添加上下文信息
May 24 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
利用pandas读取中文数据集的方法
Jul 25 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
python打包多类型文件的操作方法
Sep 21 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
Django读取Mysql数据并显示在前端的实例
May 27 #Python
django加载本地html的方法
May 27 #Python
《与孩子一起学编程》python自测题
May 27 #Python
儿童python练习实例
May 27 #Python
django输出html内容的实例
May 27 #Python
Python中判断输入是否为数字的实现代码
May 26 #Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 #Python
You might like
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
基于php编程规范(详解)
2017/08/17 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
javascript事件模型介绍
2016/05/31 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
小程序实现搜索框
2020/06/19 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
python装饰器的特性原理详解
2019/12/25 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
Linux的文件类型
2016/07/05 面试题
历史系毕业生自荐信
2013/10/28 职场文书
班级活动策划书
2014/02/06 职场文书
职工运动会感言
2014/02/07 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
中秋节活动总结
2014/08/29 职场文书
交通事故调解协议书
2015/05/20 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript