2010-07-06 134 views
2

我不知道很多关于这些类型的事情,所以请原谅NOOBnessiPhone HTTP请求安全

我发送一个HTTP请求到服务器,我想在服务器知道该请求是真实的,所以我有一个带有证书和密钥(由服务器预先制作)的p12,与我的应用程序捆绑在一起,当我将请求发送到服务器并获取挑战时,我将其提取并用作凭证。

但即时通讯想知道这是多么安全?我的密码解密p12是在我的代码中,因此那个字符串无法被破解我的应用程序二进制文件的人看到?如果是这样,那么他们不能破解p12并使用它向我的服务器发出恶意请求?

感谢

+0

大部分是http://stackoverflow.com/questions/3130969/securing-web-api-access/ – sarnold 2010-07-06 11:07:44

回答

1

你有没有使用HTTPS使用客户证书认证考虑?这肯定会解决你的身份验证问题,但我不确定这是如何在iPhone内工作的。 (例如,Safari在选择客户端证书的方式方面存在问题。) 这将在传输级别(TLS,HTTP下)执行身份验证。

如果您想在消息级别(在HTTP中)执行此操作,您还可以使用在标头中使用私钥签名的摘要。 对于摘要,摘要已有标准标题(Content-MD5),但由于最近发现的缺陷,我不会推荐MD5。也许尝试SHA-1或更高版本。 这些摘要不会被签名,所以您需要一个额外的头文件来签名(例如X-Content-RsaWithSha1),如果服务器不知道提前期望哪个证书,可能还需要另一个头文件来发送证书。 您还需要支持在服务器端读取和验证这些自定义标题。

HTTPSec specification解决HTTP级别的消息级安全问题,虽然我不知道任何iPhone实现。

关于p12文件的安全性,如果你的应用程序打算使用它,你将会以某种方式发送它的密码,如果它被捆绑在应用程序中,所以破解二进制文件也肯定会显示该密码,因此私钥。