防止垃圾邮件:对iOS应用请求服务器进行签名

3
我目前有一个iOS应用程序,允许用户向我们的服务器提交内容(类似Twitter)。我们没有登录系统,而是依靠设备的UDID来唯一识别用户(是的,知道这并不完美,但为了用户不必创建帐户而值得权衡)。iOS应用程序的请求以POST请求发送到我们的服务器,并且没有进行任何身份验证。我们目前遇到了很多垃圾邮件(显然),正在寻找一种简单的方法来验证任何请求是否确实来自我们的应用程序,而不是某个垃圾邮件脚本。我们尝试使用包含应用程序名称的用户代理字符串,但很容易被欺骗。是否有任何方法可以验证请求是否来自我们的应用程序?一个想法可能是将随机数作为参数包括在内,然后使用某些私钥加密该数字。让服务器验证加密版本等于纯文本版本。(私钥必须同时存在于我们的服务器上和嵌入应用程序中)。我不是在寻找完美的解决方案-90%的解决方案更容易实现。谢谢!

如果只需要在服务器端进行更改(即无需新的客户端代码,客户端仍然只发送设备报告的UDID),那将是非常棒的! - aloo
1个回答

1

我会通过取得消息并使用一个只有你的应用知道的秘密密钥进行盐处理,可能还会添加用户名和 UUID,然后使用 SHA-1 对它们进行哈希来解决这个问题。如果哈希与数据一起呈现,那么它将作为数字签名,您可以相当肯定该消息是真实的。

共享的秘密密钥将需要与您的应用程序一起分发,因此极力破解的攻击者将能够从您的应用程序中逆向工程出来-但随意的垃圾邮件发送者更有可能寻找更好的选择。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接