XSS知识的小汇总

举报
多米诺的古牌 发表于 2022/08/28 21:46:45 2022/08/28
【摘要】 XSS就是跨站脚本攻击,全称是Cross-Site Scripting,简称不是CSS是因为和层叠样式表重名了所以改称为XSS,其中X是代表未知并且有扩展的含义。XSS攻击涉及到三个方面:攻击者、用户、web server。

1. XSS是什么

XSS就是跨站脚本攻击,全称是Cross-Site Scripting,简称不是CSS是因为和层叠样式表重名了所以改称为XSS,其中X是代表未知并且有扩展的含义。XSS攻击涉及到三个方面:攻击者、用户、web server。

其中用户是通过浏览器来访问web server上的网页,XSS攻击就是攻击者通过各种办法,在用户访问的网页中插入自己的脚本,让其在用户访问网页时在其浏览器中进行执行。攻击者通过插入的脚本的执行,来获得用户的信息,比如cookie,发送到攻击者自己的网站(跨站了),所以这种攻击被称为跨站脚本攻击,即在用户的浏览器中执行攻击者自己定制的脚本。

2.XSS的类型

XSS可以分为反射型XSS、持久性XSS、DOM Based XSS。

2.1 反射型XSS

反射性XSS也称为非持久性XSS,它是用户点击攻击链接,服务器解析后响应,在返回的响应内容中出现攻击者的XSS代码,被浏览器去执行。XSS攻击脚本被web server反射回来给浏览器执行,所以称为反射型XSS。它没有保存在web server中,而是出现在URL地址中,一般是攻击者通过邮件,聊天软件等等方式发送攻击URL,然后用户点击来达到攻击的;

2.2 持久型XSS

和反射型不同的是这种XSS攻击是将恶意代码存储在web server中,这样每个访问特定网页的用户都会被攻击到,一般是通过网站的留言、评论、博客、日志等等所有能够向web server输入内容的地方,将攻击代码存储到web server上的;

有时持久性XSS和反射型XSS是被同时使用的,比如先通过对一个攻击url进行编码来绕过xss filter,然后提交该web server并存储在web server中,最后在用户浏览特定页面如果点击该url,就会触发一个XSS攻击,同时当用户点击该url的时候,也可能会触发一个CSRF(Cross site request forgery)的攻击。

2.3 DOM based XSS

这种XSS攻击是基于DOM的XSS攻击,是只涉及到浏览器的XSS攻击。比如根据用户的输入来动态构造一个DOM节点,如果没有对用户的输入进行过滤,那么也就导致XSS攻击的产生,过滤可以考虑采用esapi4js进行过滤。

3. XSS 攻击的防御

XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码,也就是对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容,对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。采取这些方法虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的XSS攻击。

对于输入的防御处理使用XSS filter之外,需要对于在客户端和服务器端进行各种入参验证,需要验证字符的合法性、长度、格式等等,即分为黑名单和白名单,黑名单表示验证中不能出现某些字符,白名单表示可以出现的字符;对于输出数据的防御,可以对存在潜在威胁的字符进行编码、转义。

总的来说输入防御可以采用AntiSamy提供的XSS Filter来实现,对输出进行防御可以采用ESAPI提供的编码来实现。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。