【问题标题】:Javascript quiz securityJavascript 测验安全性
【发布时间】:2015-12-20 19:34:50
【问题描述】:

我想构建类似测验的应用程序。

在浏览器中,播放声音,用户必须猜测它的音高。如果答案正确,更新用户分数。音高由随机生成的整数表示。会有高分表。

我的问题是:

是否可以完全安全地执行此操作(不允许用户通过浏览器开发工具检测音高或通过发送自己的帖子请求来更新分数)?

我想到了什么:

  1. 如果音高是在服务器端生成的,我必须通过浏览器发送它,然后用户可以找到音高,例如在 chrome 的网络部分中。
  2. 如果在客户端生成音高(在 clojure 中),我会将答案与生成的音高进行比较,然后将分数更新发布请求发送到服务器。用户可以轻松模仿这种请求。

【问题讨论】:

    标签: javascript security audio privacy


    【解决方案1】:

    不,这不安全。 您的所有文件都将在用户的计算机上。包括声音文件和 javascript 代码。

    这意味着,用户可以查看源代码以获取答案。

    如果您想保护它,您应该研究服务器端解决方案。

    【讨论】:

      【解决方案2】:

      您可以从服务器以加密形式发送音高。如果用户回答图片,则在服务器端解密音调并匹配答案。您还可以在服务器端进行不同的检查,以确定用户是否尝试禁止某些事情。

      【讨论】:

      • 我也想过这个解决方案,但这里还有另一个问题——我必须在客户端播放这个声音。所以我必须将音高传递给这样的函数:MIDI.noteOn(channel, soundPitch, velocity, delay);
      • 什么意思?您不必将 soundPitch 保存为纯文本。以某种方式以加密方式传递函数参数。
      • 问题是“如何?” :) 据我了解,如果数据是加密的,我必须对其进行加密才能获取数据 - 我只需要知道音高,因为我想播放这种声音,加密的字符串不会告诉我什么。我是对的,还是我错过了什么?
      • Imo,你甚至不需要加密。逻辑应该是这样的(是否基于ajax):1.服务器:向用户发送随机音调2.用户:向服务器发送答案3.服务器:如果匹配,增加总数并发送给用户等等..用户无法根据音高名称回答。我没有发现问题。在服务器端检查之前,您的测验是安全的。
      • 但是如果用户将看到(在调试器中)从服务器发送到浏览器的音高名称,他将能够在没有听到音符的情况下弄清楚它是什么音高。这不会那么容易,但仍然如此。我正在寻找防弹解决方案。
      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 2016-12-27
      • 2012-10-11
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多