我有一个需要从在线 MySQL 数据库收集数据的 iPhone 应用程序。我编写了一个 PHP Web 服务,所以我使用 JSON 收集数据。问题是每个人如果现在访问 URL 就可以看到数据。如何正确保护数据传输?
感谢您的建议。
通常,如果您要显示特定用户的私有数据,则每个用户通常都有一个帐户(用户 ID 和密码)。在服务器提供用户数据之前,应用程序会将用户的凭据传递给服务器。
您也可以使用 SSO 集成或 OAuth (ala Facebook) 执行类似的操作。
在某些情况下,您的应用程序可能仅在初始调用时传递用户名/密码并接收会话 ID,应用程序在剩余调用时传递该会话 ID。这允许服务器存储会话数据。
即使数据不是特定用户的私有数据,您也可以使用帐户来限制对可公开访问的 Web API 的访问和权限。
在所有上述情况下,必须使用 SSL (HTTPS) 等加密来保护身份验证机制和数据传输。
我假设您的数据对您的应用程序的所有用户都是公开的,换句话说,您不想为您的用户实现登录机制。如果您只是想确保只将数据返回给应用程序的用户,而不是任何碰巧在浏览器中输入正确 URL 的人,则需要对请求进行签名,这样只有来自应用程序的请求才会被接受你的服务器。
我使用我的应用程序用来创建服务器验证的请求的哈希/摘要的密钥(它也知道密钥)。此外,如果通过添加时间戳和随机数来拦截请求,我还确保无法重播请求。检查时间戳是否在服务器时间戳的 10 分钟内(宽松同步),并且随机数必须是唯一的(服务器保留最后 10 分钟的随机数)。这样没有人可以复制相同的请求,如果他们尝试,服务器只会提供错误。
这篇文章更详细地解释了如何签署您的请求:http: //www.naildrivin5.com/blog/2008/04/21/rest-security-signing-requests-with-secret-key-but-does-它-work.html