这容易受到 XSS 攻击吗?

Is this vulnerable to XSS?

我知道这很容易受到攻击,因为黑客可以嵌入访问网站 URL 的图像,并使用 '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 方法(仅使用此代码)?

我知道如果网站在最顶部也有代码,可以调用该方法,但是方法可以单独调用吗?

顺便说一句。我并不是要执行上述操作,它只是帮助我理解这一点。

我尝试了什么?

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

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

第二个密码不同。它只是一个函数,它本身没有 运行 任何东西。

当然,如果你用一个不受信任的字符串调用它,你会遇到和第一个一样的问题。因此,请不要这样做。

但是,攻击者无法调用任意函数。好吧,如果他们可以,那就意味着你已经被pwned了,所以这不再重要了。我的意思是,如果攻击者获得了足够的 "privileges" 来调用 displayMessage,为什么还要调用它而不是直接调用 document.write(或其他)?