【Django | 安全防护】防止 XSS 跨站脚本攻击
🤵♂️ 个人主页: @计算机魔术师👨💻 作者简介:CSDN 内容合伙人,全栈领域优质创作者。
🌐 推荐一款找工作神器网站: 牛客网🎉🎉|笔试题库|面试经验|实习招聘内推 还没账户的小伙伴 速速点击链接跳转牛客网登录注册 开始刷爆题库,速速通关面试吧🙋♂️
该文章收录专栏✨---【Django | 项目开发】从入门到上线 专栏---✨
@[toc]
一、XSS 攻击过程原理
创建一个 XXS
脚本漏洞作为演示
我们创建视图函数返回模型对象的字段
创建视图函数
复制代码
添加路由环境(只能开发环境使用,由于演示漏洞环境,我们放在添加最后面路由)
复制代码
这个视图函数只返回了两个字段,但已经足够用来演示XXS攻击
原理了
二、假设我是一名攻击者🐱👤
原理
攻击者将自己的个人信息填写上
javascript
脚本,那么我们作为用户去查看字段时,会直接渲染 信息内容,此时就会运行攻击脚本script
进行发送信息,删除用户等操作
创建一名攻击者用户,在个人信息填上攻击的代码
跳转到该页面(可以看到直接显示
cookie信息
了😱😱)可以看到,攻击者可以通过此方法得到 cookie ,还可以对得到用户的更多信息,以及增删改查操作,这是很危险的! 🤯
三、修复漏洞🔨
我们可以用函数html.escape()
对其做一个转义,最建议的方法是使用系统的render
方法,用django
自带模板机制渲染页面。
html.escape()
方法很简单,就是将"&", "<" 和 ">"
符号变成HTML-safe sequences
,这样就可以将字符串单纯表示出来
html.escape()
源码
复制代码
我们将之前的视图函数添加该方法
复制代码
可以看到此时改脚本不会运行🎉
但是通常情况不用该方法,建议使用render
渲染模板,或者使用我们的通用类视图。
复制代码
评论