iphone - 将 iOS 应用程序请求签名到服务器以防止垃圾邮件

标签 iphone ios security encryption spam

我目前有一个 iOS 应用程序,允许人们向我们的服务器提交内容(类似 Twitter)。我们没有登录系统,而是依靠设备的 UDID 来唯一标识用户(是的,意识到这并不完美,但对于不必创建帐户的用户来说值得权衡)。

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

我们目前遇到了很多垃圾邮件(很明显),并且正在寻找一种简单的方法来验证任何到达我们服务器的请求实际上来 self 们的应用程序 - 而不是垃圾邮件发送者编写的一些脚本。

我们尝试使用包含应用名称的用户代理字符串,但很容易被欺骗。有什么方法可以验证到达我们服务器的请求是否来 self 们的应用程序?

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

我不是在寻找完美的解决方案 - 90% 易于实现的解决方案绝对是首选。

谢谢!

最佳答案

我会通过获取消息、使用只有您的应用程序知道的 key 对其进行加盐处理来解决此问题,并且可能添加用户名和 UUID,然后使用 SHA-1 对它们进行哈希处理。如果散列与数据一起出现,那么它将充当数字签名,您可以合理地确定消息是真实的。

共享 key 必须与您的应用程序一起分发,因此非常坚定的攻击者将能够通过逆向工程将其从您的应用程序中移除 - 但随意的垃圾邮件发送者更有可能只是寻求更绿色的牧场。

另一种方法是在注册时生成一个 pgp 私钥/公钥对 - 但要解决这个问题需要做很多工作。

关于iphone - 将 iOS 应用程序请求签名到服务器以防止垃圾邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129638/

相关文章:

ios - 将 UIDatePicker countDownTimer 默认值设置为 1 分钟

iphone - 播放声音时的内存管理帮助-iPhone编程v

ios - ios使用描述的edit-config : doc. find is not a function

security - GWT Spring 安全 - 客户端

python - Django:名称 'csrf_token' 未定义

iphone - 核心数据在看似正常的 NSString 字段上崩溃

ios - 无法使具有标识符 Cell 的单元格出列 - 必须为标识符注册一个 Nib 或一个类,或者在 Storyboard中连接一个原型(prototype)单元格

c# - Unity - IOS persistentDataPath 访问被拒绝//无法打开数据库

ios - 如何在sqlite ios中插入包含“字符的字符串

php - 为什么将 MySQL 凭据放在 www 目录之外?