这容易受到XSS的攻击吗?

时间:2016-01-23 00:21:09

标签: javascript xss

我知道这很容易受到攻击,因为黑客可能会嵌入一个访问网站网址的图片,并使用'message'参数进行各种排序:

<script>
var message = // get message parameter from URL, e.g domain.com?message=hello+there
document.write('Your message: ' + message);
</script>

...但是有没有办法黑客可以做任何事情(没有任何其他JS本身)?:

<script>
function displayMessage(message) {
  document.write(message);
}
</script>

显然我可以在浏览器中打开一个控制台并输入任何内容,但黑客是否可以某种方式调用JavaScript方法(仅使用此代码)?

我知道如果网站的代码位于最顶层,可以调用该方法,但是可以自己调用方法吗?

顺便说一下。我并不想完成上述任务,只是帮助我理解这一点。

我尝试了什么?

1 个答案:

答案 0 :(得分:2)

在第一个代码中,message是一个不受信任的字符串,可能包含恶意代码。将其解析为HTML可以执行该代码:

var message = '<img src="//" onerror="alert(\'You are pwned!\')" />';
document.write('Your message: ' + message);

第二个代码不同。它只是一个功能,它本身不会运行任何东西。

当然,如果使用不受信任的字符串调用它,则会遇到与第一个问题相同的问题。因此,不要这样做。

然而,攻击者无法调用任意函数。好吧,如果他们可以的话,这意味着你已经知道了,所以不再重要了。我的意思是,如果攻击者获得了足够的“权限”以便能够调用displayMessage,为什么还要打扰它而不是直接调用document.write(或其他)?