我想在我的服务器和客户端的iOS应用程序之间使用共享密钥(可能会在每个版本的应用程序中更改),以便可以加密数据并对其进行解密。 至少我需要这个在iOS端工作,加密它将要发送的数据。 我不希望机器人或恶意用户扫描我的数据库。我需要加密位置,时间戳和一些数据。
原始字符串可能是100-200个字符长。加密前。
使用SSL将有助于规避“中间人”。但我需要发送加密的URL。类似的东西:
iOS端请求:
NSString * theKey =“Kazam”;
NSString * theString =“lat=10.222455
& lon=23.342224455
& ID=3476rghfb3uf34f
& timestamp=34325224433
”
PARAM =进行urlencode(encryptString(theString,theKey));
https://www.mydomain.com/page1.php?的 PARAM = sdhcy39h923498ufdd
服务器接收参数并对其进行解密
PHP服务器:
$ theKey =“Kazam”;
$解密= decryptString($ GET [ 'PARAM'],$ theKey);
然后将数据返回给客户端。
再次,我不介意从服务器发送的数据是否会被加密。 毕竟,客户端是可以扫描数据库的人。
提前致谢!!
答案 0 :(得分:2)
请勿使用网址传递参数。也就是说,使用POST请求而不是GET请求。它就这么简单!通过HTTPS发送POST请求非常安全。 更新:是的,GET请求是通过HTTPS加密的。但对于一些(可能没有根据的)理由,POST对我来说似乎更安全。我不喜欢变量或密码可以存储在浏览器缓存或服务器日志中的想法。此外,黑客更容易与GET建立恶意链接。
此外,请不要忘记,如果网络上有内容,任何人都可以发送请求,因此您应该使用服务器端身份验证,除非您完全确定可以在合法请求和欺诈性请求之间进行解密。 / p>
答案 1 :(得分:1)
使用SSL(HTTPS)时整个HTTP请求都已加密,因此您可以像以前一样在URL中发送数据。