开发我网站的公司刚刚在Zend Guard加密索引.php文件中添加了这个javascript代码(我在"View source"中看到它):
(function ()
{
var smrs = document.createElement("script");
smrs.type = "text/javascript";
smrs.async = true;
smrs.src = document.location.protocol + "//www.domain.com/file.js";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(smrs, s);
})();
它注入了一个非常激进的javascript代码,在页面底部添加一个图像链接到他们的网站(每10秒有一个SetInterval)。
问题 ?目前被指控犯有重大欺诈行为的本地竞争对手拥有相同的CMS和相同的图像链接。
与那个竞争对手联系在一起对我来说是有偏见的。我想知道是否有办法阻止使用 .htaccess 加载"www.domain.com/file.js"。
谢谢。
你不能(使用htaccess)。此 javascript 创建一个脚本标记来加载外部 javascript。调用永远不会通过服务器。所以apache(htaccess)无法阻止这一点。
最简单的方法是搜索源代码并删除脚本(如果您有访问权限)。
更新:
我看到脚本已加密...如果可以在最开头插入脚本(在代码执行之前),则可以在insertBefore方法上创建一个钩子。这是一个工作小提琴
var ALLOWED_DOMAINS = ['www.klaartjedevoecht.be', 'jsfiddle.net'];
function creatHook(){
function getDomain(url) {
return url.match(/://(.[^/]+)/)[1];
}
var insertBefore = Element.prototype.insertBefore;
Element.prototype.insertBefore = function(new_node,existing_node){
if(new_node.tagName.toLowerCase() === 'script' && ALLOWED_DOMAINS.indexOf(getDomain(new_node.src)) > -1){
insertBefore.call(this, new_node, existing_node);
}
}
}
creatHook();
//TESTING CODE:
var smrs = document.createElement("script");
smrs.type = "text/javascript";
smrs.async = true;
smrs.src = document.location.protocol + "//www.klaartjedevoecht.be/test.js";
//var smrs = document.createElement("img");
// smrs.src= "http://img52.imageshack.us/img52/7653/beaverl.gif";
var s = document.getElementsByTagName("div")[0];
s.parentNode.insertBefore(smrs, s);
我同意这有点黑客攻击,但至少它比计时器解决方案更干净。如果无法删除它,则没有干净的解决方案。