【问题标题】:How to avoid tampering of javascript / HTML elements如何避免篡改 javascript/HTML 元素
【发布时间】:2017-10-10 20:06:59
【问题描述】:

在我的fiddle 中,我有一个示例应该只允许用户通过基于某些计算的 javascript 将禁用的提交按钮元素设置为 false 来单击提交。

  function enable(TVD) {
    if (TVD[TVD.length - 1] >= trueTVD - 5 && TVD[TVD.length - 1] <= trueTVD + 5) {
      //console.log(TVD[TVD.length - 1]);
      $('#submitButton').prop("disabled", false);
    } else {
      $('#submitButton').prop("disabled", true);
    }
  }

发生的事情是,我发现一些用户可能通过使用开发工具之类的东西设法绕过了这一点。

我想这样设计,使我的安全无法被绕过。如何实现此目标或从开发工具中隐藏 javascript?

【问题讨论】:

  • 我不是专家,但我想这种保护需要在服务器端实施。
  • 服务器端验证

标签: javascript html security


【解决方案1】:

简短回答:你不能

长答案:每个人都可以向您的服务器发送任何内容。因此,安全过滤和检查用户输入的唯一方法是仅在服务器端

对不起

【讨论】:

    【解决方案2】:
    1. 最好的方法是在服务器上验证。永远不要相信来自客户的任何东西。它可能被篡改。

    2. 永远不可能完全阻止加载开发工具,但是您可以通过禁用 F12 按钮和上下文菜单来使其变得困难,但这是您不想走的路。

    3. 使用经过压缩的代码,因此阅读和理解以及使用开发工具或其他嗅探器篡改变得更加困难。

    总结:结合客户端和服务器上的健全性检查(也最好在数据库上)使用缩小(混淆)代码。

    【讨论】:

    • 很高兴知道,不幸的是,第 3 方(Amazon Turk)托管了提交将被发送到的服务器,所以即使我用信息 ping 我自己的服务器,它也不会阻止某人点击提交。
    • 您仍然可以将这些发布到您的服务器并在 php 中使用 curl 来获取结果。
    【解决方案3】:

    Afaik,您无法向用户隐藏 javascript 代码。见this

    实现混淆的一种低级方法是缩小 javascript 文件,因为大多数用户不会费心跟踪单个字母命名的变量等。

    【讨论】:

    • 这不仅仅是关于 javascript,您可以在不查看代码的情况下操作 DOM(例如启用按钮)。
    猜你喜欢
    • 2018-08-23
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2020-01-24
    相关资源
    最近更新 更多