散列和使用时间作为盐以防止未经授权的系统访问和重放攻击
问题描述:
我目前正在为手机游戏编写用户认证API。我想确保用户只能从移动应用程序访问系统。 (也就是说,即使精确的POST参数有效,如果从浏览器或CURL(未授权系统)访问服务器API,服务器也必须拒绝访问。理想情况下,系统不应该允许重放攻击。散列和使用时间作为盐以防止未经授权的系统访问和重放攻击
有没有人有这样做的想法或例子?
我正在考虑在客户端应用程序中添加一个具有当前时间戳和SHA256参数的私有密钥的每用户salt,然后这些密钥将在服务器上进行验证。这种方式将阻止来自浏览器或CURL的访问,因为攻击者需要获取私钥才能计算SHA256哈希。盐(包括时间戳)也将作为参数之一发送,服务器将获得时间戳并拒绝访问,如果它超过特定时间。但是我对安全性以及是否是普通或正确的做法不太确定,因为我从未设计过安全的应用程序,或者看过之前的源代码。
感谢您的输入!
答
这将阻止用户拦截网络上的请求并将它们与CURL结合使用。但私钥和签名算法都可以为您的应用程序提取并重新实现,因此此解决方案不会完全安全。
唉,如果没有一些自定义防篡改硬件发布给用户,这里就不能有完整的安全性。
感谢您的意见!我不会担心试图从应用中提取密钥的玩家太多,因为我基于几个类似键的字符串即时生成密钥(其中一些字符串是虚拟的以欺骗黑客) 。我只需要让大多数球员有点难以回避 – Zennichimaro