在Android中保护我的REST请求?

在Android中保护我的REST请求?,android,authentication,rest,Android,Authentication,Rest,我有一个服务器端脚本,它获取我的应用程序使用的一些数据。当然,除了我的应用程序,我不希望其他人访问数据。我听说在使用某个软件时,可以看到设备连接的url。如何防止这些程序看到我呼叫的url?还是有更好的方法来保护请求 我唯一能想到的是在url中使用密码键(并在服务器端检查它是否匹配): 但对于安全认证来说,这可能还不够。嗅探器程序仍然可以获取该url。有没有更安全的简单方法?最简单的方法是使用HTTPS。这样,嗅探器只能知道您连接到的服务器 还有其他一些方法使用复杂的方法,使唯一密钥仅在短时间内

我有一个服务器端脚本,它获取我的应用程序使用的一些数据。当然,除了我的应用程序,我不希望其他人访问数据。我听说在使用某个软件时,可以看到设备连接的url。如何防止这些程序看到我呼叫的url?还是有更好的方法来保护请求

我唯一能想到的是在url中使用密码键(并在服务器端检查它是否匹配):


但对于安全认证来说,这可能还不够。嗅探器程序仍然可以获取该url。有没有更安全的简单方法?

最简单的方法是使用HTTPS。这样,嗅探器只能知道您连接到的服务器


还有其他一些方法使用复杂的方法,使唯一密钥仅在短时间内/单个请求中有效,例如WSSE(请参阅本文)

为了保护服务器请求,您所能做的很少。有人总是能够看到你的应用程序点击的URL,在查询字符串中使用密码也无济于事。为了保护应用程序的安全,您需要使用HTTPS和某种形式的身份验证。用户需要提供用户名和密码才能进行连接。

如果我理解正确,您应该实施相互身份验证。基本上,客户机和服务器上都有证书。当向服务器发出请求时,服务器将验证该请求是否由已知客户端签名

因此,即使嗅探器知道url并试图向服务器发出相同的请求,它也会被拒绝,因为它没有被已知的客户端签名。我对这一点也很陌生,但这是一般的概念。这个博客有基本的步骤


对于我来说,这不是一个很好的解决方案,因为不可能在应用程序的web版本中进行用户注册。这只会让用户感到困惑,恐怕没有别的办法了。没有办法将您的应用程序与不能被嗅探器愚弄的另一个客户端区分开来。一个“天真”的解决方案是加密数据并在Android客户端解密。您需要在应用程序中硬编码的对称密钥。一个有决心的用户仍然可以找到自己的路并打开钥匙。在某些情况下,它可能是好的,虽然.HTTPS可能是我可以做的,但我不知道如何在服务器和Android端实现它。我以前搜索过,但找不到一个我能理解的例子。在android方面,你没有任何事情可做。在服务器端,您需要证书,避免使用rapidssl,因为android 2.2存在问题。关于如何在许多web服务器上包含ssl证书的教程有很多。因此,这对我的用例(服务器上没有存储敏感信息,只是为了防止滥用)是很好的,而那些嗅探程序只会得到
https://example.com/
我请求的一部分,而不是
https://example.com/get?key=1234567
http://example.com/getdata?key=897ihrduiuyqewudiew&get=something