防止' src'在脚本标记中单击源代码

时间:2016-03-10 20:22:56

标签: javascript jquery html angularjs

简单的问题,我确信它已被多次询问过!

如何防止在我的源代码中点击我的JS文件的链接?

我正在创建一个Angular JS SPA网站并已经采取行动解决方案,因此通过附加网址几乎不可能访问链接,因为它会一直反弹回主页,这就是我想要。

但是,我需要隐藏我的src代码,并且已经有很多方法可以做到这一点,但只是想阻止源代码中的链接被点击'。

我已经设法为我的CSS(Google方法)做了这样的事情,这与我想要的类似:

Lorem ipsum dolor sit
amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

4 个答案:

答案 0 :(得分:7)

简答:你不能。 HTML,CSS和JavaScript被称为客户端代码有一个原因。您永远不能从HTTP请求中隐藏生成的代码。你当然可以混淆它,但永远不要隐藏它。

在下面的评论中进行了一些讨论之后,我觉得有必要跟进说明,当您的问题要求阻止用户查看您的链接并在源代码中点击它们时,它确实“感觉”就像你的问题真的“我可以阻止用户在我的源代码中看到我的链接吗?”我可能错了,但从我们的讨论来看,这就是它的样子。而且,如果那确实是你的问题,那么这是一个关于安全性的问题,而且明确的答案是,从来没有办法保护你的客户端代码免受窥探。

许多网站对其代码进行模糊处理(将变量和函数名称更改为看似毫无意义的名称,编码URL等),但最后,如果有人想检查您的代码并将其拆分,他们可以。

答案 1 :(得分:2)

你不能。

如果代码在浏览器中运行,则用户可以完全访问它。在您的CSS示例中,我可以简单地检查DOM并查看它添加的<link>元素并轻松找到源代码。它与查看源代码的工作量相同。即使你有些隐藏它(你可以尝试,但它不会工作),我可以检查我的浏览器正在发出的实际HTTP请求,并在请求本身中读取脚本。你无法隐藏它。

那你能做什么?

使用它

这通常涉及通过解析器运行脚本,这使得人类难以阅读。这实际上并没有隐藏任何东西,只是让它更难以弄清楚它的作用。客户端仍然可以完全访问它。这不是安全性,任何真正想要你的代码的人都有它。

将其放在服务器上

如果您绝对不希望客户端看到您的JavaScript,请不要将其发送给客户端。实现要在服务器上隐藏的部分,让客户端只请求它绝对需要的信息(客户端能够看到的信息)。

这不适用于CSS,因为浏览器需要CSS来实际呈现页面,在这种情况下,客户端可以看到您的所有CSS是否在页面加载或添加到页面时DOM之后。

答案 2 :(得分:0)

您只需修改CSS注入器即可添加JS:

<script>
    var cb = function() {
        var l = document.createElement('script');
        l.src= 'script.js';
        var h = document.getElementsByTagName('head')[0];
        h.parentNode.insertBefore(l, h);
    };
    var raf = requestAnimationFrame || mozRequestAnimationFrame ||
    webkitRequestAnimationFrame || msRequestAnimationFrame;
    if (raf) raf(cb);
    else window.addEventListener('load', cb);
</script>

这会将'script.js'添加到文档中,并且无法从“view-source”中点击外部脚本的url。

会阻止任何开发人员找到您的脚本。

答案 3 :(得分:0)

这里不受欢迎的观点,但你可以使用jQuery的getScript,它会eval()代码进入你的页面(没有link)。当然,您正在使用的链接将在getScript调用中,除非您执行类似从API端点获取URL的操作。 。 。