签署iOS应用程序请求服务器以防止垃圾邮件

时间:2011-11-14 23:25:52

标签: iphone ios security encryption spam

我目前有一个iOS应用程序,允许人们向我们的服务器提交内容(类似于Twitter)。我们没有登录系统,相反,我们依靠设备的UDID来唯一地识别用户(是的,知道这不是完美的,但值得为不必创建帐户的用户进行权衡)。

来自iOS应用程序的请求将作为POST请求发送到我们的服务器,并且不会以任何方式进行身份验证。

我们目前正在经历大量垃圾邮件(显然),我正在寻找一种简单的方法来验证任何命中我们服务器的请求实际上来自我们的应用程序 - 而不是垃圾邮件发送者编写的某些脚本。

我们尝试使用包含应用名称的用户代理字符串,但很容易被欺骗。有没有办法验证我们的服务器上的请求来自我们的应用程序?

一个想法可能是将随机数作为参数包含在内,然后使用某个私钥加密该数字。让服务器验证加密版本是否为纯文本版本。 (私钥必须在我们的服务器上以及嵌入在应用程序中)。

我不是在寻找完美的解决方案 - 一种易于实施的90%解决方案是首选。

谢谢!

1 个答案:

答案 0 :(得分:1)

我通过接收消息来解决这个问题,使用仅为您的应用知道的密钥对其进行腌制,并且可能添加用户名和UUID,然后使用SHA-1对其进行哈希处理。如果哈希与数据一起呈现,那么它将充当数字签名,您可以合理地确定该消息是真实的。

共享密钥必须随您的应用程序一起分发,因此一个极其坚定的攻击者将能够从您的应用程序中对其进行逆向工程 - 但是一个偶然的垃圾邮件发送者将更有可能只是寻求更环保的牧场。

另一种方法是在注册时生成pgp私钥/公钥对 - 但这对于这个问题来说是很多工作。