Php 返回一个安全的;得奖代码“;对用户

Php 返回一个安全的;得奖代码“;对用户,php,jquery,authentication,encryption,encoding,Php,Jquery,Authentication,Encryption,Encoding,这可能是一个非常基本/介绍性的问题,但让我来描绘一个场景: 假设我正在使用jQuery在我的网站上做一些小测验游戏。用户点击正确答案,然后弹出一个窗口,其中有一个秘密的“赢家代码”,他们可以在别处兑换 我如何才能生成赢家的代码,使其不只是出现在HTML中,而且用户无法对其进行反向工程(至少不用付出很大的努力) 我的意思是,如果我只是生成一个编码字符串,其中包含他们的用户名和一些只有我知道的附加信息,那就行了,对吗?或者MD5散列或其他什么,但是我如何使其不在HTML中显示获奖者的代码本身,并且只

这可能是一个非常基本/介绍性的问题,但让我来描绘一个场景:

假设我正在使用jQuery在我的网站上做一些小测验游戏。用户点击正确答案,然后弹出一个窗口,其中有一个秘密的“赢家代码”,他们可以在别处兑换

我如何才能生成赢家的代码,使其不只是出现在HTML中,而且用户无法对其进行反向工程(至少不用付出很大的努力)

我的意思是,如果我只是生成一个编码字符串,其中包含他们的用户名和一些只有我知道的附加信息,那就行了,对吗?或者MD5散列或其他什么,但是我如何使其不在HTML中显示获奖者的代码本身,并且只有在选择正确答案时才显示


感谢您提供的任何建议阅读/教程/帮助/建议。

如果我理解正确,您只想在选择正确答案时显示代码

如果是这样,只需创建一个PHP页面,将用户在GET/POST变量中选择的答案发送到该页面。然后,让PHP页面仅在答案正确时显示代码。这样,如果答案不正确,它就不会出现在HTML中

例如,您的PHP页面如下所示:

<?php
if ($_GET["answer"] == "correct_answer") {
  echo "give the code here";
} else {
  echo "sorry the answer was incorrect";
}
?>


此外,如果您希望上述内容出现在javascript弹出窗口或其他内容中

如果我理解正确,您只想在选择正确答案时显示代码吗

如果是这样,只需创建一个PHP页面,将用户在GET/POST变量中选择的答案发送到该页面。然后,让PHP页面仅在答案正确时显示代码。这样,如果答案不正确,它就不会出现在HTML中

例如,您的PHP页面如下所示:

<?php
if ($_GET["answer"] == "correct_answer") {
  echo "give the code here";
} else {
  echo "sorry the answer was incorrect";
}
?>


此外,如果您希望上述内容出现在javascript弹出窗口或其他内容中

这里有几个问题

1)如何生成安全代码:

如果你正在实现一个“赢家代码”,你可以使用散列的iv+秘密+用户信息,或者一些签名机制。您还可以在服务器上实现代码到期时间,以便在必要时进一步提高标准

2)将代码发送给获胜用户:

如果您不希望代码出现在html中,那么您需要使用ajax来获得它。然后将代码注入要显示它的DOM中。此外,您应该使用一个安全的SSL通道来执行此操作,以便防止嗅探。更进一步,考虑一种“一次性”令牌,这样中间的人就不能重新发布代码请求并接收相同的Win代码。
希望这给你一些考虑。

< P>有几个问题。

1)如何生成安全代码:

如果你正在实现一个“赢家代码”,你可以使用散列的iv+秘密+用户信息,或者一些签名机制。您还可以在服务器上实现代码到期时间,以便在必要时进一步提高标准

2)将代码发送给获胜用户:

如果您不希望代码出现在html中,那么您需要使用ajax来获得它。然后将代码注入要显示它的DOM中。此外,您应该使用一个安全的SSL通道来执行此操作,以便防止嗅探。更进一步,考虑一种“一次性”令牌,这样中间的人就不能重新发布代码请求并接收相同的Win代码。

希望这给你一点考虑。

首先,为了保证游戏的安全性,所有的获胜评估都必须在服务器上完成,所有可兑现的代码必须在服务器上唯一地创建并发送给客户端。p> 因为所有javascript代码都可供任何人检查,所以不能以安全的方式在客户端上完成。有一些方法可以使javascript代码变得模糊,从而使逆向工程对某些人来说更加痛苦,但这并不能阻止一个坚定的黑客——它只能让他们放慢速度或稍微阻止他们。评估游戏结果的代码/算法唯一安全且不受操纵的地方是在服务器上


即使这样,你也可能需要做一些事情来阻止一个用户获得一个可赎回的代码,然后与其他许多人共享,或者得到正确的答案,然后让其他人编写一个脚本,将正确的答案提交到你的服务器以生成无限的代码。

首先,为了让游戏更安全,所有中奖评估必须在服务器上完成,所有可赎回代码必须在服务器上唯一创建并发送到客户端

因为所有javascript代码都可供任何人检查,所以不能以安全的方式在客户端上完成。有一些方法可以使javascript代码变得模糊,从而使逆向工程对某些人来说更加痛苦,但这并不能阻止一个坚定的黑客——它只能让他们放慢速度或稍微阻止他们。评估游戏结果的代码/算法唯一安全且不受操纵的地方是在服务器上


即使在那时,您可能需要采取一些措施,防止一个用户获得一个可赎回的代码,然后与其他许多人共享,或者得到正确的答案,然后让其他人编写一个脚本,将正确的答案提交到您的服务器以生成无限的代码。

阅读ajax…将游戏信息发送到服务器,让服务器生成代码当您的逻辑允许时返回代码在ajax上读取…将游戏信息发送到服务器,并让服务器在您的逻辑允许时生成返回代码。如果用户无法看到您将变量传递到的PHP页面(例如“testanswer.PHP”)然后进入他们的地址栏,尝试页面上的每一个选择,直到它吐出一个赢家的代码?例如