0

这可能是对我的问题的一种虚假描述,我不确定这是否最好发布在 Stackoverflow 或超级用户上。

我的问题如下,我正处于构建测验 ios-app 的计划阶段。在某些情况下,它实际上会每月分发实物奖品,这意味着安全性必须足够严格以减少作弊的可能性。我将在带有 Apache 和经过认证的 SSL (Rapid-SSL) 的 debian 服务器上用 PHP 构建后端。

我的猜测是,对于每个问题,它都需要将它来回发送到服务器,以便服务器对答案进行身份验证,并让用户知道答案是否正确。对于某些情况(非中奖测验),我什至想返回正确答案。

我的问题是,安全方面的最佳方法是什么?我是否应该对来回发送的数据进行编码,如果是这样......如何以及使用什么(是否有一些我可以使用的常见编码类型,例如 base64 或类似的)?

编辑
我的意思是编码,而不是加密。我更新了问题

此外,对于身份验证,我正在考虑使用 Facebook OAuth 登录。

4

2 回答 2

1

如果您通过 SSL 发送,则数据肯定已经加密。想想看,最大的担心是身份验证。确定提交问题的用户实际上就是那个用户。为此,我将使用简单的密码身份验证。而且因为一切都通过 SSL,这应该足够了。在这种情况下,最大的担忧是用户端的恶意软件。

于 2013-01-06T23:41:30.963 回答
1

让我详细解释一下:

a) 如果您害怕中间人攻击或在发送到服务器(或从服务器接收数据)之前修改您的数据包,SSL 会阻止他们。

b)如果您想阻止黑客/调试器/逆向者,如果他们反转您的代码并且您的代码提交例如 SSL 中的高分,他们也可以轻松提交,如下所示:

https://yoursite.com/submithighscore.php?score=[SCORE] 即使你使用 https,当黑客泄露 URL、分数提交方法和 HTTP 参数时,他们也可以使用简单的 curl 命令提交虚假结果。

因此,在这种情况下,您可以实现一种高级加密算法,例如使用已知算法对数据进行加密,并对您的应用程序进行一些特定的更改,从而保护您的应用程序不被逆转(这有点困难)。它将阻止大多数黑客/逆向者。

如果你选择了一个好的密钥交换算法和加密模式,除了注入代码或修改你的代码之外,为黑客伪造它是很困难的。这一次你必须采取一切防倒车措施。即使您在这里使用公钥加密而没有采取防逆向措施,黑客也可以在您的应用程序中注入代码,例如将 X 点添加到每个提交点,它只需要一条汇编指令。

无论如何,很难有一个真正真正安全的系统,逆向者逆向,密码破解者试图找出你的加密算法并试图破解它。但是您也可以尽最大努力阻止大多数黑客。

于 2013-01-07T00:20:41.803 回答