什么是跨站脚本 (XSS)?

跨站点脚本 (XSS) 是 Web 应用程序中的一个漏洞,它允许第三方代表 Web 应用程序在用户的浏览器中执行脚本。跨站点脚本是当今网络上最普遍的漏洞之一。针对用户利用 XSS 可能会导致各种后果,例如帐户泄露、帐户删除、权限提升、恶意软件感染等等。

什么是跨站脚本 (XSS)?_第1张图片

在最初的日子里,它被称为 CSS,但它并不完全是今天的样子。最初,我们发现恶意网站可以利用 JavaScript 通过将其他网站的响应嵌入到 iframe 中来读取数据、运行脚本和修改页面内容。当时它被称为 CSS(跨站点脚本)。当 Netscape 引入同源策略并且跨站点脚本被限制启用跨源响应读取时,定义发生了变化。很快有人建议将此漏洞称为 XSS 以避免与级联样式表 (CSS) 混淆。当网站在将其插入响应之前没有正确处理用户提供给它的输入时,就会出现 XSSed 的可能性。在这种情况下,可以提供精心制作的输入,当嵌入响应时充当 JS 代码块并由浏览器执行。根据上下文,有两种类型 的 XSS –

  1. 反射型 XSS:如果每次执行都必须提供输入,这种 XSS 称为反射型 XSS。这些攻击主要是通过直接向受害者提供有效载荷来执行的。受害者请求一个包含有效负载的请求的页面,有效负载作为脚本嵌入到响应中。反射型 XSS 的一个示例是搜索字段中的 XSS。

    什么是跨站脚本 (XSS)?_第2张图片

  2. 存储型 XSS:当包含有效负载的响应以这样的方式存储在服务器上时,每次访问都会执行脚本而不提交有效负载,那么它被标识为存储型 XSS。存储型 XSS 的一个示例是评论线程中的 XSS。

    什么是跨站脚本 (XSS)?_第3张图片

还有另一种类型的 XSS,称为基于 DOM 的 XSS,它的实例要么被反射,要么被存储。当用户提供的数据未经适当清理而提供给 DOM 对象时,就会出现基于 DOM 的 XSS。下面是易受 XSS 攻击的代码示例,请注意变量firstnamelastname: 

  • php

 
   if(isset($_GET["firstname"]) && isset($_GET["lastname"]))
   {  
 
       $firstname = $_GET["firstname"];
       $lastname = $_GET["lastname"];   
 
       if($firstname == "" or $lastname == "")
       {
 
           echo "Please enter both fields...";      
 
       }
 
       else           
       {
 
           echo "Welcome " . $firstname. " " . $lastname;  
 
       }
   }
   ?>

用户提供的输入直接添加到响应中,无需任何完整性检查。攻击者输入类似 - 

  • html

<script> alert(1) script>

它将被呈现为 JavaScript。XSS有两个方面(以及任何安全问题)——

  1. 开发人员:如果您是开发人员,重点将是安全开发,以避免产品中出现任何安全漏洞。您无需深入研究利用方面,只需使用工具和库,同时按照安全研究人员的规定应用安全代码开发的最佳实践。开发人员的一些资源是 - a)。OWASP 编码项目:它是一个用 Java 编写的库,由开放 Web 应用程序安全项目 (OWASP) 开发。它是免费、开源且易于使用的。乙)。“X-XSS-Protection”标头:此标头指示浏览器激活内置的 XSS 审核器,以识别和阻止针对用户的任何 XSS 尝试。C)。OWASP 的 XSS 保护备忘单:该资源通过适当的示例列出了开发过程中要遵循的规则。这些规则涵盖了多种情况,开发人员可能会错过一些可能导致网站易受 XSS 攻击的内容。d)。内容安全策略:它是针对类似 XSS 问题的独立解决方案,它指示浏览器有关“安全”源的信息,除此之外,不应从任何源执行任何脚本。
  2. 安全研究人员:另一方面,安全研究人员想要类似的资源来帮助他们寻找开发人员变得糟糕并留下切入点的实例。研究人员可以利用 – a)。CheatSheets – 1. OWASP 的 XSS 过滤器规避备忘单。2. Rodolfo Assis 的 XSS 备忘单。3. Veracode 的 XSS 备忘单。乙)。实践实验室 – 1. bWAPP 2. DVWA(该死的易受攻击的 Web 应用程序)3. prompt.ml 4. CTFs c)。报告 – 1. Hackerone Hactivity 2. Jason Haddix、Geekboy、Prakhar Prasad、Dafydd Stuttard(Portswigger) 等著名安全研究人员的个人博客。

你可能感兴趣的