反射型XSS说明:如何在您的应用程序中防止反射型XSS
详细了解如何在应用中阻止反映的XSS。
什么是反映的XSS?
XSS允许攻击者将脚本注入网站或应用程序的内容。当用户访问受感染的页面时,该脚本将在受害者的浏览器中执行。这允许攻击者在模仿受害者的身份时窃取私人信息,如cookie,帐户信息或执行自定义操作。
反射XSS(也称为非持久性XSS攻击)是一种特定类型的XSS,其恶意脚本从另一个网站反弹到受害者的浏览器。它通常在URL中传递给查询。它使得利用像欺骗用户点击链接一样简单。
与存储的XSS相比,非持久性XSS仅需要将恶意脚本添加到链接并且用户单击该链接。
为什么反射XSS很重要?
即使反射XSS为攻击者提供的能力较低,它们也比存储的XSS更常见。这是因为利用XSS只需要用户点击恶意链接,而在电子邮件,论坛等中包含此链接很容易。
作为攻击者,能够利用反射XSS也意味着他们可以在易受攻击的Web应用程序中执行任意JavaScript。这使得攻击者可以使用任何可编程触发的应用程序操作。例如,比特币交易所用户可以将比特币转移给任意用户。
JavaScript代码也在受害者的浏览器中运行。这允许利用基于浏览器,基于操作系统或浏览器的基于插件的漏洞。他们让攻击者拥有该机器 - 通常使其成为僵尸网络的成员。
由于反映XSS通常涉及一些社交工程(诱骗用户点击恶意链接),因此通常通过制作虚假登录页面来直接窃取用户的凭证。攻击的反射性质确保从用户的角度看一切都是有效的:HTTPS,URL(至少在开头),甚至密码管理器都会识别网站并填写表格。
如何避免代码中的XSS漏洞?
XSS漏洞来自缺乏数据转发。当在模板引擎级别使用用户输入时,应执行转义。这是开发人员唯一点在上下文中可以知道用户数据。
我们举一个简单的例子。以下是典型的Ruby on Rails模板,其中用户数据在许多不同的地方提供。同样代表任何其他语言的任何模板引擎。