【问题标题】:How to hide the data in source code from the user如何对用户隐藏源代码中的数据
【发布时间】:2013-10-29 23:15:30
【问题描述】:

作为一个学习 Web 开发的辅助项目,我正在用 Javascript 编写一个 Web 应用程序,它允许我的同学在搜索字段中输入我们的 Class ID #。如果他们输入了正确的班级 ID,他们将自动被重定向到我们的 Google 群组页面。我看到的唯一问题是,由于我正在为我正在学习的不同课程运行多个 Google 群组,所以我不知道如何隐藏 javascript 代码。

Example in Pseudocode: 
If (input === 12345){
  redirect to (LinkToClass1GoogleGroupsPage.com)}
Else If (input === 12344){
  redirect to (LinkToClass2GoogleGroupsPage.com)}

这里的问题是,如果他们右键单击并查看源代码,他们将清楚地看到我正在寻找的输入。我是 Web 开发的新手,我想知道实现此类功能的最佳方法是什么。

【问题讨论】:

  • 您可以阻止右键单击该页面。一旦开发完成,您可能会缩小您的脚本,这会使其难以理解。
  • 可以使用ajax请求发送id的链接。所以该例程将留在服务器端。
  • @AkshayKhandelwal:那么当我保存 HTML 时会发生什么?
  • 但请确保有一些工具可以覆盖上述内容,例如某人可能有 firebug,或者可能使用右键单击 firefox 中的插件等。缩小代码是安全的想法
  • offcourse 我忘了提到它会按原样工作。因此,在上述场景中,您可能会在保存文件时从服务器加载数据,这些数据不会与 html 一起存储

标签: javascript html


【解决方案1】:

您无法隐藏 JavaScript 代码。如果您有秘密,请将其保存在服务器上。

【讨论】:

  • 不错的方法,但这不是答案。
  • 这是一个答案。我不知道 OP 使用的是什么服务器端语言(如果有的话),所以真的不能说别的。
  • 我同意沃兹。如果有秘密,您必须将其保存在服务器上。调用 web 服务或进行 ajax 调用以获取数据。但是javascript不能保密
  • 我刚才说这个回答太肤浅了。尝试向 OP 解释它是如何工作的,以澄清您的 anwser。
  • @woz 你可以用一些样本解释为什么以及如何做到这一点。这种帖子,看起来像是评论而不是答案。
【解决方案2】:

除非加密,否则客户端环境中的任何内容都是可读的——JavaScript 无法使用的内容。您可以使用服务器端环境来处理此问题,而无需使用 node.js 离开 JavaScript,请查看 this post

使用 ajax 请求(jQuerypure)到 node.js service 或您选择的任何其他服务器端语言,并使这些操作远离用户的视线。这是更安全、正确且可能唯一的方法。

【讨论】:

    【解决方案3】:

    您无法在 JavaScript 中隐藏数据,除非您使用服务器端语言进行重定向。

    但是,您可以做的是混淆您的代码,有一些工具可以帮助您做到这一点。

    http://javascriptobfuscator.com/

    "LinkToClass2GoogleGroupsPage.com"
    

    结果

    var _0x2ec6= ["\x4C\x69\x6E\x6B\x54\x6F\x43\x6C\x61\x73\x73\x32\x47\x6F\x6F\x67\x6C\x65\x47\x72\x6F\x75\x70\x73\x50\x61\x67\x65\x2E\x63\x6F\x6D"];_0x2ec6[0];
    

    【讨论】:

    • 这使您的代码无法调试,并且混淆!= 加密。
    • 通过默默无闻的安全通常是个坏主意,迟早有一天有人会发现它,然后一切都会崩溃
    • 在向学生隐藏数据的情况下,混淆不应该那么糟糕,除非他们是 CS 学生渴望破解他的网站。
    【解决方案4】:

    要做到这一点,最安全的方法可能是拥有一个可以通过 Ajax 调用以返回链接的服务器端函数。

    您使用哪种类型的服务器端代码取决于您的偏好。

    例如ASP.NET Web ServicePHPASPX Web Methods

    以下是使用 jQuery 的示例 Ajax 请求代码:

        var o = new Object();
        o.ID = input;
    
        var x = JSON.stringify(o);
    
        $.ajax({
            url: 'SOME URL', //Path to the Server Side function (i.e. Php / ASPX Web Method / Web Service)
            type: 'GET',
            dataType: 'JSON',
            contentType: 'application/json;charset=utf-8;',
            data: x,
            success: function (data) {
                //Method returned without issue
                redirect to (data.d)
                //data is a JSON object that contains a "d" property, if your function returns a string then d will be the value of the string.
            },
            error: function (ajaxrequest) {
                //Ajax call received an error.
            }
        })
    

    【讨论】:

      【解决方案5】:

      这还不能完成。 HTML5 将来可能会有 DRM 实现,但这也将取决于选择启用此功能的浏览器(例如,Mozilla 反对它)。

      【讨论】:

        【解决方案6】:

        禁用右键单击和 ctrl 按钮即可! :D

        【讨论】:

        • 这仍然不会隐藏代码。只需 Ctrl+Shift+I 即可绕过此操作。
        猜你喜欢
        • 2019-07-28
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-07
        • 1970-01-01
        相关资源
        最近更新 更多