【问题标题】:How do I prevent website user from seeing certain information until a certain condition is met.在满足特定条件之前,如何防止网站用户看到某些信息。
【发布时间】:2017-06-24 00:47:27
【问题描述】:

这就是我希望我的网站做的事情:

网站会生成一个介于 1 到 10,000 之间的随机数。

然后,网站用户将通过将他们的猜测输入文本框来猜测网站生成的数字。

如果用户输入错误的数字,则会生成一个新数字,用户必须再次猜测。

如果用户猜对了号码,则会显示代码。

我的问题是,如果用户只是检查 java 脚本,他们将能够看到脚本中的代码编号。如何防止网站用户操纵 javascript 代码以了解网站生成的数字?另外,如何防止用户通过查看 javascript 来访问代码?我需要使用php还是什么?

感谢您花时间阅读我的问题。

【问题讨论】:

  • 在您的服务器上存储您不希望用户看到的任何内容

标签: javascript php html security web


【解决方案1】:

首先,在他们真正猜到之前,您不必生成数字。

function guess(number){
   var rand=Math.random()*10000;
   if(number==rand){
      //success
   }else{
      //failure
   }
}

这种方式在他们猜测之前不会生成任何数字,并且您无法对其进行检查。

也跳出框框思考:根据条件,猜测的数字是无关紧要的。如果数字每次都改变,他们每次有 1/10,000 的机会猜对。你只需要编写一个每万次只成功一次的函数。但是,如果他们正在寻找源头,他们可能会感到被背叛了。

【讨论】:

  • 谢谢,但我想我想表达的意思是用户可以根据自己的喜好更改代码。他们可以将生成的随机数更改为 1 到 2 而不是 1 到 10,000。有没有办法解决这个问题?
  • 调试器可以在初始声明后为rand 分配一个新值。
  • 我明白你在说什么。是的,绝对没有办法解决它,你必须使用 php。这是完全相同的代码逻辑,只是语法不同。但是,一旦你这样做了,不要忘记他们可以向你的 php 文件发送一百万次垃圾邮件,以强制他们找到正确的答案,所以你也必须阻止它。我认为猜数字的奖品很重要。
  • 从技术上讲,rand 应转换为整数以使概率正确。但答案是一个很好的说明方法是错误的。上次我在 Stack Overflow 上超时时,它给了我一组图像,并要求我选择其中有树的图像。下次它可能会要求我识别可爱的小猫图片。
  • 太棒了。谢谢你们的答案。我想会是这样。
【解决方案2】:

如果您将所有游戏逻辑放在客户端,客户端将能够破解您的游戏。所有主要的网络浏览器都带有一个调试器,它可以以各种不同的方式轻松操作和导航您的客户端代码。

这就是为什么服务器端应该负责这些检查和验证。如果客户端必须将号码提交给您的服务器,则可以在服务器端生成答案,以免被篡改。

【讨论】:

  • 谢谢,这消除了我的很多顾虑。在 php 中实现这样的东西会比在 java 脚本中实现困难得多吗?
  • 如果你不熟悉 PHP 会有点困难,但是所有的基础都是一样的。基本上你只需要知道如何从查询字符串中提取参数,如何随机生成一个数字,以及如何将响应返回给页面(JSON、Html?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 2017-10-29
  • 2021-06-17
  • 2022-06-20
  • 1970-01-01
  • 2011-06-10
相关资源
最近更新 更多