【问题标题】:Block JS from loading on certain domains阻止 JS 在某些域上加载
【发布时间】:2012-07-27 01:28:10
【问题描述】:

我有一个网络服务,它通过为用户提供 JavaScript 嵌入到他们的代码中来工作。用户还可以将该代码放在其他网站上,使其在那里工作。但是,我还需要允许用户创建 JS 不应该在其上运行的网站的黑名单。例如,竞争对手或不适当的网站。

有没有办法检查我们的 JS 文件是从哪里加载的,并在每个帐户的基础上阻止加载或中断功能?

编辑:javascript 在网站上加载 iframe,因此另一种解决方案是以某种方式阻止某些域从我们的服务器加载 iframe,或向该 iframe 提供不同的内容

编辑 2:我们也在尝试避免使用 JS 执行此操作,因为它可以被下载和修改以通过块

【问题讨论】:

    标签: javascript


    【解决方案1】:

    检查页面的url

    是的,javascript 文件在开始执行时可以检查 window.url 并查看主文档的 url 是否正常。

    查看脚本的加载位置

    也可以通过dom,寻找自带javascript文件的脚本节点,看看js是从哪里加载的。

    但是

    任何人都可以将 javascript 加载到文本编辑器中,然后对其进行更改以消除测试,然后将修改后的 JS 托管在自己的服务器上。混淆或最小化 JS 可能会减慢某人的速度,但晦涩难懂并不安全。

    【讨论】:

    • 是的,这个警告是我们试图避免的。我将更新问题以澄清这一点。
    【解决方案2】:

    您可以做的一件事是让 javascript 加载另一个 javascript 文件。您在给定的 url 从服务器提供服务。这里的诀窍是该 url 不会转到文件,而是转到将返回 javascript 文件的服务器端点。您有该端点检查该用户的路由,并决定它是否会返回您想要工作的 javascript 或某种类型的错误 javascript。

    这个博客展示了如何在 php.dynamic-javascript-with-php 中做到这一点

    【讨论】:

    • 通常不难解决这个问题:如果坏人可以运行“正确”的 url/页面并让它工作(JS 提供给页面),那么坏人可以使用 Firebug或者相当于将下载的JS存储在本地文件中,以供分析,以后使用等。记住,最终您需要将JS提供给页面。因此,任何有权访问该页面的人都可以使用调试器存储 JS。
    • 你是对的。您永远无法阻止用户表单访问浏览器中的内容。不过,你可以让它变得更加困难。
    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 2014-10-14
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多