Web安全之XSS攻击

本文参考资源:

XSS攻击常识及常见的XSS攻击脚本汇总 - 简书
XSS攻击_百度百科

XSS概述

跨站脚本攻击(Cross Site Scripting),因为避免和CSS混淆,通常称之为XSS。

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。比如运行在用户浏览器上的富文本编辑器脚本,如果不过滤用户输入的数据直接显示用户输入的 HTML 内容的话,就会有可能运行恶意的 JavaScript 脚本,导致页面结构错乱,Cookies 信息被窃取等问题。

XSS的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。

类型

常见的 XSS 攻击类型有两种,一种是反射型,一种是持久型。

反射型

发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。

攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的。

比如新浪微博中,攻击者发布的微博中含有一个恶意脚本的 URL(URL 中包含脚本的链接),用户点击该 URL,脚本会自动关注攻击者的新浪微博 ID,发布含有恶意脚本 URL 的微博,攻击就被扩散了。

Web安全之XSS攻击

现实中,攻击者可以采用 XSS 攻击,偷取用户 Cookie、密码等重要数据,进而伪造交易、盗窃用户财产、窃取情报。

持久型(存储型)

存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码

Web安全之XSS攻击

最典型的例子是留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当做正常的HTML与Js解析执行,于是触发了XSS攻击。

预防

Web 页面渲染的所有内容或者渲染的数据都必须来自于服务端。

后端在入库前应该选择不相信任何前端数据,将所有的字段统一进行转义处理。

后端在输出给前端数据统一进行转义处理。

前端在渲染页面 DOM 的时候应该选择不相信任何后端数据,任何字段都需要做转义处理。

消毒(转义)

XSS 攻击者一般都是在请求中嵌入恶意脚本达到攻击的目的,这些脚本是一般在用户输入中
不常用的,如果进行过滤和消毒处理,即对某些 HTML 危险字符转义,如”>”转义为”>”,
就可以防止大部分的攻击。为了避免对不必要的内容错误转义,如”3<5”中的”<”需要进行文
本匹配后再转义,如”\<img src=”这样上下文中的”\<”才转义。

HttpOnly

如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。

浏览器禁止页面 JavaScript 访问带有 HttpOnly 属性的 Cookie。

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/web%e5%ae%89%e5%85%a8%e4%b9%8bxss%e6%94%bb%e5%87%bb/

发表评论

电子邮件地址不会被公开。