单引号是否会导致XSS攻击

Can a single quote leads to XSS attacks?

本文关键字:XSS 攻击 是否 单引号      更新时间:2023-09-26

一句话单独会导致跨站点脚本攻击吗?如果是,你能给我举个例子吗?

例如:javascript:aalert('hi')但这里我们使用的是:也与引号一起使用。

我不确定您到底在问什么,但有些XSS向量包含单引号,而不包含javascript:。例如:

<IMG SRC= onmouseover="alert('xxs')">

有关示例的长列表,请参阅https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet.

单引号是否会导致XSS?不可以。但是在许多语言中,单引号能够终止字符串,例如:SQL。您引用的单引号是SQL注入漏洞的经典示例

有许多可能的方法来执行XSS,这部分取决于所使用的服务器软件,部分取决于客户端是否比有时更可靠。

XSS代表跨站点脚本。问题是,如果有人——来自你无法控制的外部来源——能够将脚本添加到你的网页中,那么该脚本将在那里运行,并具有部分或全部相关特权

是。比较:

alert(
  eval(
    location.hash.slice(1) // '
// ^
  )
);

alert(
  eval(
    'location.hash.slice(1) // '
//  ^
  )
);

第一种是非常脆弱的。

您提到的例子是我所知道的唯一常见的方法。在大多数其他情况下,很难使用单引号来注入HTML,但也不一定不可能(至少在一些罕见的情况下)

例如,使用双引号:

const customLink = `" onmouseover="alert()"`
const html = `<a href="${customLink}">click here!</a>`

将变为:

<a href="" onmouseover="alert()">click here!</a>

但是,使用单引号,不能结束href属性(至少据我所知)。因此,注入HTML更为棘手。例如,以下方法可行,但可能不太常见:

const customAttribute = `onmouseover='alert()'`
const html = `<a ${customAttribute}>click`