【问题标题】:jquery load to hide contentjquery加载隐藏内容
【发布时间】:2012-04-20 17:25:15
【问题描述】:

我的网页上有 javascript,但我需要对我的用户隐藏它(我不希望他们能够看到它,因为它包含一些游戏答案。)

所以我尝试使用 Jquery .load 来隐藏内容(我使用该调用从外部 js 文件加载内容)。但它无法加载。所以我尝试了ajax,它也失败了。

也许问题出在我试图加载位于我的根目录中的文件,而原始页面位于“root/public_html/main/pages”中:

<script type="text/javascript">
$(document).ready(function() {
    $.ajax({
        url : "../../../secret_code.js",
        dataType: "text",
        success : function (data) {
            $("#ajaxcontent").html(data);
        }
    });
});
</script>

1) 为什么我不能用ajax或load方法从根目录加载文件? 2) 还有其他方法吗?

PS:我将文件放在根目录中,因此人们无法直接从浏览器访问它...

【问题讨论】:

  • 这实际上不会对您的用户隐藏任何内容,只会稍微难找。
  • @jimw 怎么样?你怎么能看到 JS 是异步加载的呢?有没有办法正确隐藏它?
  • 只是一个提示,我整天都在这样做,如果你使用 .load 加载一个带有 js 的“视图部分”,只有 html 和样式脚本(如果可用)会显示在错误控制台,js本身被添加到页面标题但不容易被看到,狡猾的用户总是可以在页面上获取js。如果您想要真正的安全性,请使用 $.ajax 并维护您的“答案”服务器端,仅将需要看到的内容发送给客户端并返回客户端信息以获得下一个答案或其他任何内容
  • Adam:嗯,这取决于您何时加载它:加载后用户可以看到它——它在客户端中,所以他必须能够看到。如果您只在用户提交他的答案后才加载答案,那么这不是问题,除非他们可以回来并再次尝试知道他们错误的答案。

标签: javascript jquery


【解决方案1】:

1) 如果文件不能通过网络浏览器访问,则不能通过 ajax 访问(ajax 是网络浏览器的一部分

2) 尝试/secret_code 而不是../../../secret_code.js

【讨论】:

  • 我不希望我的用户能够访问 JS
  • @AdamStrudwick 如果您使用 js 文件,用户可以看到它。没有办法阻止它。
  • 抱歉,浏览器不是黑盒子(嗯,IE 是,但不是好东西。)也许你想制作一个专有的桌面应用程序而不是网页?跨度>
  • 人们可以使用例如 chrome 检查器来查看浏览器发送或接收的每个字节。没关系,如果它的javascript。如果人们想作弊得够厉害,他们会的。做合理的事,以后有需要的时候再对付作弊者。
【解决方案2】:

您的系统设置是什么?你在使用 CMS 吗?

即使您在页面加载后将 javascript 添加到页面,使用 firebug 之类的工具的用户也可以查看它。我不认为你正在做的事情真的会保护它。另一种解决方案是您可以缩小和混淆您在生产环境中使用的 javascript。这将产生几乎不可读但功能正常的 javascript 代码。您可以通过许多工具运行代码来缩小和混淆它。这是您可以使用的一种工具:http://www.refresh-sf.com/yui/

如果这还不够,那么也许您可以将游戏的答案放在服务器端并通过 ajax 提取它们。我不知道你的设置,所以我不知道这对你是否可行。

【讨论】:

  • 我在 VPS 上,所以我拥有完全访问权限。根据你的说法,我应该混淆和缩小代码 - 我可以添加额外的 htaccess 限制以防止用户访问 js 本身吗?它是什么行(我对 htaccess 不是很熟悉,除了错误页面......)谢谢
  • 据我所知,如果浏览器可以访问您的 javascript 文件以便您可以运行它,那么用户也可以。我认为您不能授予浏览器访问权限而不是用户。如果您需要隐藏任何数据或逻辑,那么它需要存在于服务器端代码中。
【解决方案3】:

导航到 URL,而不是目录。喜欢

$.ajax({
        url : "http://domain.com/js/secret_code.js",

..

【讨论】:

  • 我不希望用户能够直接通过 Web 访问它。使用您的解决方案,如果他们尝试访问它,他们可以看到 secret_code.js...通过将其放在根目录中,我将其隐藏。
  • 将它放在根目录(或任何其他不可通过网络访问的目录)是防止用户看到 javascript 的唯一方法。但是,它也会阻止您的代码看到它。隐藏代码时无法在浏览器中运行代码。
  • @AdamStrudwick,没有办法阻止用户看不到已经加载的脚本。
【解决方案4】:

即使您动态加载内容,使用 firebug、fiddler 或任何类型的代理也很容易查看文件的内容。我建议你使用obfuscator。用户将更难找到答案

【讨论】:

    【解决方案5】:

    看看jQuery.getScript() 函数,它是为通过 AJAX 加载 Javascript 文件而设计的,应该可以满足您的需求。

    【讨论】:

      【解决方案6】:

      尝试 jQuery 的 $.getScript() 方法来加载外部 脚本文件,但是,您可以使用 Firebug 或开发人员工具栏轻松查看脚本文件的内容!

      【讨论】:

        【解决方案7】:

        安全第一

        你不能用 JavaScript 访问你的根目录,因为人们会读出你的数据库密码,ftp 密码也是如此。如果可以的话。

        【讨论】:

        • 那么有没有真正的方法可以防止 JS 被用户访问?
        • @AdamStrudwick 是的,但是浏览器和您的应用程序将无法访问它(使其无用)。
        【解决方案8】:

        您只能加载可直接从浏览器访问的文件,例如,http://www.mydomain.com/secret_code.js

        如果不能被浏览器直接访问,则不能被浏览器通过ajax访问。 但是,您可以使用 .htaccess 来阻止用户直接打开 js 文件,但这并不能阻止他们在 google chrome 或 firebug 控制台中查看它。

        如果您想保密,请不要让它进入浏览器。

        【讨论】:

        • 如何防止使用 htaccess 直接访问脚本?
        • 其实这是不可能的。我不确定我在想什么。
        猜你喜欢
        • 1970-01-01
        • 2011-07-25
        • 2013-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-08
        • 2015-03-11
        • 2012-11-08
        相关资源
        最近更新 更多