我想在服务器和客户端的iOS应用程序之间使用共享密钥(可能会在应用程序的每个版本中进行更改),以便可以对数据进行加密和解密。
至少我需要在iOS端进行此工作,对即将发送的数据进行加密。
我不希望机器人或恶意用户扫描我的数据库。我需要加密位置,时间戳和一些数据。
原始字符串的长度可能为100-200个字符。加密之前。
使用SSL将有助于逃避“中间人”的攻击。但是我需要发送加密的URL。就像是:
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”;
$ decrypted = decryptString($ GET ['param'],$ theKey);
同样,我不介意从服务器发送的数据是否不会被加密。
毕竟,客户端是可以扫描数据库的客户端。
提前致谢!!
最佳答案
不要使用URL传递参数。也就是说,使用POST请求而不是GET请求。就这么简单!通过HTTPS发送POST请求非常安全。 更新:是,GET请求通过HTTPS加密。但是由于某些(可能是毫无根据的)原因,POST对我来说似乎更安全。我只是不喜欢变量或密码可以存储在浏览器缓存或服务器日志中的想法。另外,黑客更容易使用GET建立恶意链接。
另外,请不要忘记,如果网络上有东西,任何人都可以发送请求,因此,除非您完全确定可以在合法请求和欺诈请求之间进行解密,否则您应该使用服务器端身份验证。