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