xss-跨站脚本攻击-后台传给前端的html标签安全显示
作用
后台拼接的html字符串传到前端,默认是不安全的,需要告诉前端这个字符串是安全的,可以正常显示html标签。
知识点
1、定义
恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。
2、工作流程
1)恶意用户,在一些公共区域(例如,建议提交表单或消息公共板的输入表单)输入一些文本,这些文本被其它用户看到,但这些文本不仅仅是他们要输入的文本,同时还包括一些可以在客户端执行的脚本。如:
1 2 3 | <script> 获取session,cookie,伪造成用户。。。。 </script> |
2)恶意提交这个表单
3)其他用户看到这个包括恶意脚本的页面并执行,获取用户的cookie等敏感信息。
三种解决方法
后台拼接字符串传到前端不显示问题
1 传到前端是个变量
1 | {{ 变量 | safe }} |
2 需要simpletag处理的数据不能加safe
1 2 3 | {% autoescape off %} {% 模板引擎函数 函数参数 %} {% endautoescape %} |
3 后端传往前端前就标记为安全的
marksafe()
1 2 | from django.utils.safestring import mark_safe return mark_safe(传到前端的html字符串) |