gpt4 book ai didi

JavaScript:阻止执行 javascript:-分配给 location.href 的 URI

转载 作者:行者123 更新时间:2023-11-28 03:51:44 25 4
gpt4 key购买 nike

我目前正在为自己开发一个网络扩展(Firefox:最新),它可以阻止/捕获函数,这些函数能够将字符串作为 javascript 代码进行评估和执行(例如,eval、函数构造函数、setTimeout)。

到目前为止,扩展程序按预期工作,但 javascript:-URI 被分配给 location/location.href。

例如:

location.href = "javascript:alert('Hello there')";

由于位置对象是不可配置的,我无法重写它(例如,设置为 null)或为其定义 setter。

我知道,“Content-Security-Policy”(不允许 unsafe-inline )能够阻止此行为,但是以这种方式使用 CSP 也会阻止内联代码的所有其他实例(例如,脚本标签之间的代码) )。我想避免这种情况,因为它需要每一个 <script>...</script>重新插入,例如随机数。

这引出了我的问题:有没有办法阻止/捕获这种代码执行?

最佳答案

假设您希望阻止一个简单链接执行 Javascript,该链接的 href 属性设置为 javascript:alert('Hello There')

<a href="javascript:alert('Hello there')">Click me</a>

避免这种情况的方法之一是简单地选择所有此类链接,并将 href 属性重置为无害的内容,例如 javascript:void(0) .

在下面的代码片段中,我使用属性选择器来选择具有以 javascript 开头的 href 值的所有元素。

var elems = document.querySelectorAll('[href^="javascript:"]');

for (var idx = 0; idx < elems.length; idx++) {
elems[idx].href = "javascript:void(0)";
}
<a href="javascript:alert('Hello there')">Click me</a>

关于JavaScript:阻止执行 javascript:-分配给 location.href 的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47942213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com