单引号会导致XSS攻击吗?

时间:2014-09-23 17:37:31

标签: javascript xss

单一引号是否会导致跨站点脚本攻击,如果可以,请为我提供一个示例?

一个例子是: JavaScript的:警报( '你好') 但我们在这里使用:还有引用。

4 个答案:

答案 0 :(得分:2)

我不确定你究竟在问什么,但有些XSS载体包含单引号而且不包括javascript:。例如:

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

有关一长串示例,请参阅https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

答案 1 :(得分:0)

单独引用单引号可以导致XSS吗?不可以。但单引号能够以多种语言终止字符串,例如:SQL。 您引用的单引号是classic example of a SQL Injection vulnerability

There are many possible ways to perform XSS,部分取决于所使用的服务器软件,部分取决于客户端比有时更明智的信任。

XSS代表跨站点脚本。问题是如果有人 - 来自外部来源,在您的控制之外 - 能够将脚本添加到您的网页,那么该脚本将在那里运行,具有一些或所有相关的权限

答案 2 :(得分:0)

是。比较:

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

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

第一个非常脆弱。

答案 3 :(得分:0)

您提到的示例是我所知道的唯一常用方法。在大多数其他情况下,很难使用单引号插入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`