javascript - 如何防止.htaccess跨域javascript加载?

标签 javascript .htaccess cross-domain

开发我网站的公司刚刚在 Zend Guard 加密的 index.php 文件中添加了这个 javascript 代码(我通过“查看源代码”看到了它):

(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);
})();

它注入(inject)了一个非常激进的 JavaScript 代码,在页面底部添加了一个指向其网站的图像链接(每 10 秒一次 SetInterval)。

问题是什么?目前被指控犯有重大欺诈行为的本地竞争对手拥有相同的 CMS 和相同的图像链接。

与该竞争对手有联系对我来说是不利的。我想知道是否有办法阻止使用 .htaccess 加载“www.domain.com/file.js”。

谢谢。

最佳答案

你不能(使用 htaccess)。此 javascript 创建一个脚本标记来加载外部 javascript。调用永远不会经过服务器。所以 apache (htaccess) 无法阻止它。

最简单的方法是在源代码中搜索并删除脚本(如果您有权访问)。

更新:

我看到脚本已加密...如果您可以在最开始插入脚本(在代码执行之前,您可以在 insertBefore 方法上创建一个钩子(Hook)。这里是 working fiddle

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);

​我同意这有点黑客行为,但至少它比计时器解决方案更干净。如果无法将其删除,则没有干净的解决方案。

关于javascript - 如何防止.htaccess跨域javascript加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880451/

相关文章:

HTML5 视频无法使用 crossOrigin ="anonymous"播放

Javascript 在显示元素时循环遍历数组

javascript - HTML,试图在左侧创建一个滑动菜单(附截图)

javascript - div标签的分层问题

.htaccess:非 www 到 www(使用 https)在 Firefox 中显示 ssl_error_bad_cert_domain

php - 仅当使用 mod_rewrite 找到文件时才替换 URL

javascript - Canvas 被 CORS 图像污染

Javascript 函数使用另一个函数中的 var

php - 将任何 GET 请求重定向到单个 php 脚本

google-analytics - Google Analytics Auto Linker 跨域链接的替代方案