Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios客户端<&燃气轮机;php后端加密_Php_Objective C_Security_Encryption - Fatal编程技术网

ios客户端<&燃气轮机;php后端加密

ios客户端<&燃气轮机;php后端加密,php,objective-c,security,encryption,Php,Objective C,Security,Encryption,这可能有点像是对我问题的浮夸式描述,我不确定这是最好发布在Stackoverflow还是超级用户上 我的问题如下,我正在计划构建一个ios应用程序。在某些情况下,它会每月发放实物奖品,这意味着安全措施必须足够严密,以减少作弊的可能性。 我将在带有Apache和认证SSL(Rapid SSL)的debian服务器上用PHP构建后端 我的猜测是,对于每个问题,它都需要来回发送到服务器,以便服务器验证答案,并让用户知道答案是否正确。对于某些情况(非价格优胜测验),我甚至想返回正确答案 我的问题是,在安

这可能有点像是对我问题的浮夸式描述,我不确定这是最好发布在Stackoverflow还是超级用户上

我的问题如下,我正在计划构建一个ios应用程序。在某些情况下,它会每月发放实物奖品,这意味着安全措施必须足够严密,以减少作弊的可能性。 我将在带有Apache和认证SSL(Rapid SSL)的debian服务器上用PHP构建后端

我的猜测是,对于每个问题,它都需要来回发送到服务器,以便服务器验证答案,并让用户知道答案是否正确。对于某些情况(非价格优胜测验),我甚至想返回正确答案

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

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


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

如果您通过SSL发送,数据肯定已经加密。考虑到这一点,最大的担忧是身份验证。确信提交问题的用户实际上就是该用户。为此,我将使用简单的密码验证。因为一切都是通过SSL实现的,所以这就足够了。这种情况下最大的担忧是用户端的恶意软件。

让我详细解释一下:

a)如果你害怕中间人攻击或修改你的数据包,然后发送到服务器(或者从服务器接收数据),SSL会阻止它们。 b) 如果您想阻止黑客/调试器/反向者,如果他们反转您的代码,并且您的代码提交(例如SSL中的高分),他们也可以轻松提交,如下所示:

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

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

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


无论如何,要有一个真正安全的系统是很困难的,反转器反转了,破译器消失了,试着找出你的加密算法并尝试破解它。但是你也可以尽力阻止大多数黑客。

如果你通过SSL发送,数据已经加密了,不是吗?如果这还不够,您可以在数据离开服务器之前对其进行额外加密,并在IOS应用程序中对其进行解密。这意味着您需要在IOS应用程序和服务器之间至少交换一次密钥,以便两者都能说相同的语言。这可能是编译到IOS应用程序中的一个秘密,在首次注册和注册安装后可能会进行一些密钥交换,再加上每个会话的密钥交换,甚至每个请求都会进行密钥交换。安全,因为它是最薄弱的品脱,设备。安全相关的问题,最好问上(等待它)。。。据我所知,当用户在提交之前没有答案时,他们不会真的作弊。他们应该知道答案。如果是测验,答案可能是4-6种可能性。所以你必须停止用户强迫回答。这很简单,您只能接受每个用户对问题的第一个答案。所以放松点谢谢你的回答。是的,我知道让应用程序发布结果的情况,这是不好的。这样的应用程序有点愚蠢,因为它应该只显示后端告诉它的内容。我想我的意思不是加密,而是编码。我将更新我的问题。你可以用数据库中的ID对每个问题进行编码,并将其发送给具有该ID的用户。每次用户尝试发送答案时,ios应用程序都应使用给定ID对其进行编码,在服务器端,你可以解码并验证答案。同样如前所述,您应该防止在服务器端对每个问题强制4-5个答案。您可以详细说明强制语句吗。你的意思是同时获取5个问题吗?不是,每个答案由用户提交5个可能的答案选择,以防止作弊。因为这是一个测验,所以有很多选择,比如b c d e f,如果一些黑客找到了提交答案的方法,他们可以发送每个问题的所有可能答案。您应该接受每个用户每个问题的第一个答案。