浅聊一下Django如何避免xss攻击
一、什么是xss攻击
xss攻击:----->web注入
xss跨站脚本攻击(Cross site script,简称xss)是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称之为“跨域脚本”。
我们常常听到“注入”(Injection),如SQL注入,那么到底“注入”是什么?注入本质上就是把输入的数据变成可执行的程序语句。SQL注入是如此,XSS也如此,只不过XSS一般注入的是恶意的脚本代码,这些脚本代码可以用来获取合法用户的数据,如Cookie信息。
PS: 把用户输入的数据以安全的形式显示,那只能是在页面上显示字符串。
django框架中给数据标记安全方式显示(但这种操作是不安全的!):
- - 模版页面上对拿到的数据后写上safe. ----> {{XXXX|safe}}
- - 在后台导入模块:from django.utils.safestring import mark_safe
二、如何避免xss攻击
PS:利用HTML特殊符号
使用Django模板语言(DTL)编写HTML,Django会自动进行HTML转义,如:
<
会转换为<
>
会转换为>
'
(单引号)转换为'
"
(双引号)会转换为"
&
会转换为&
<a href="">a标签</a> --- <a href="">a标签</a>
后端mark_safe相当于是否替换‘<’这类的符号