我的网站刚刚正式上线,就被人用js注入了alert。也是无聊,我正忙着笔试呢没空修复。现在修复一下。
就说对form提交的数据进行js转义就行了。
建议直接方法3
方法一
在django中用escape 或 escapejs过滤器
其实django模板已经做了防止js注入,但是我们又想在页面中正常显示我们在form表单中提交的和标签等。所以用了safe过滤器告诉浏览器是可信的,正常渲染。
{{ content | safe }}
但是,这样就会造成恶意人员实施js注入:
在表单中评论
<script>alert("哈哈哈")</script>
导致网页一直弹出哈哈哈
要解决它我们可以在内容处添加过滤器
{{ content | escape }}
# 或者
```python
{{ content | escapejs }}
方法2
使用html的escape转义
import html
html.escape(content)
方法3
之前那样处理会造成自己的,img标签也被转义。
这样处理就好了,re过滤一下
# 防止js注入
re_script = re.compile(r'<script>(.*?)</script>')
if re_script.search(content):
content = html.escape(content)