有没有办法阻止(特定的)恶意脚本在我自己的网页上运行

is there a way to block (specific) malicious scripts from running on my own webpage?

本文关键字:脚本 恶意 我自己 自己的 运行 网页 有没有      更新时间:2023-10-08

问题是在用户端运行的一些插件(或其他第三方)会影响我的网站;更改脚本、替换某些元素或以某种方式损害用户体验。

我想做的是阻止特定的js文件(来自我熟悉的其他服务器)被加载,或者只允许我的脚本文件加载到我的网站上。

我知道我可以在加载后从dom中删除特定的脚本标记,但这并不能解决问题,因为代码会留在内存中并运行。

有没有一种方法可以对页面进行初始编码?

通过重写作用域的"appendChild"函数,但将其保存到不同的函数名称,解决了这个问题。

在重写的"appendChild"函数中,我添加了一些条件,以确保没有具有特定阻止源(来自数组列表)的脚本会执行原始的"appentChild"功能。

希望这能清除它。

var blockedUrlsArr = [
    'someUrl/malicious1.js',
    'someUrl/malicious2.js',
    'someUrl/malicious3.js'
];
function checkBlockedUrls(url) {
    var result = false;
    for (var i = 0; i < blockedUrlsArr.length; i++) {
        if (url.indexOf(blockedUrlsArr[i]) !== -1) {
            result = true;
            break;
        }
    }
    return result;
}
var originalAppendChild = Element.prototype.appendChild;
Element.prototype.appendChild = function () {
    if (arguments[0].tagName.toLowerCase() === 'script') {
        if (!checkBlockedUrls(arguments[0].src)) originalAppendChild.apply(this, arguments);
    }
    else originalAppendChild.apply(this, arguments);
};