是否可以使用 jQuery 的 .attr("href", value) 方法对 <a> 标签执行 XSS 攻击?

Is it possible to perform a XSS attack using jQuery's .attr("href", value) method for <a> tags?

给定以下 html 片段,它是在 html 文件中静态键入的:

<a id="link001" href="https://google.com" target="_blank">Google</a>

请注意,href 的属性值被引用了。当攻击者可以在以下上下文中为变量 unsafe_string 提供任意值时,是否可以执行 XSS 攻击:

$('#link001').attr("href", unsafe_string);

我的问题是:是否可以注入并执行恶意代码?攻击者只能控制 unsafe_string 而别无其他。攻击者可以假设受害者最终会点击 link.

用户可以通过单击 link 转到某些恶意网站的情况应该被忽略。

是的,这是不安全的,可以在恶意代码前添加 javascript:

$('#link001').attr("href", "javascript:alert('evil')");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id="link001" href="https://google.com" target="_blank">Google</a>