Android JSON Security

本文关键字:Security JSON Android | 更新日期: 2023-09-27 18:06:09

我正在开发一个Android项目,我需要连接到后端c#服务来获取数据。我正在考虑使用JSON来避免SOAP消息开销。实现JSON请求安全性的最佳方法是什么?使其不能被公众访问,只能由专用用户访问。

我正在考虑使用SSL登录后从服务器获取令牌(或SessionID),并且登录后的所有服务调用将使用此令牌进行身份验证。

但是登录后我应该如何使用令牌-

1)。通过HTTP(可以很容易被截获吗?)

2)。通过HTTPs(如果每个调用都通过HTTPs进行,会有性能问题吗?)

你能给一些指导,如何实现它是安全的,而不影响性能?

更新!

Android应用程序是由webview和native activity组成的Hybrid模式。如果令牌是基于会话的,我应该如何维护会话?用户可以登录和不活动很长一段时间。我应该增加会话超时吗?

Android JSON Security

我建议即使在获得令牌之后也使用SSL。我们的公司处理与银行和健康相关的安全数据有关的项目,即使在令牌实现之后,我们也被要求使用SSL。我们发现,即使使用https,性能仍在合理范围内。

使用Https不会对性能造成巨大影响,特别是考虑到有人可能会嗅探您的数据包并获得令牌(假设我们不知道用户可能连接到的接入点)。

与SSL相关的开销将发生在初始握手期间,因为它基本上需要通过RSA交换密钥和加密算法。然而,一旦你通过了初始握手,成本只与数据包的加密/解密有关,这对你的应用程序不会有很大的影响。

作为旁注,你也可以在你的应用程序上使用客户端证书来实现安全性,以确保只有应用程序可以调用web服务。这将进一步保护调用,因为黑客需要访问证书才能访问服务器。即使他们知道登录名,如果没有证书,他们也无法访问端点。

SSL会影响一些性能,但不会太大(从我的经验来看)。我将使用半安全哈希,如下所示:

MD5SUM或SHA1如下:今天的日期+一些标点符号+用户的一些独特的东西(可能是电子邮件,等等…)这将给你一个长字符串看起来像ajadfh28dfj2yadsfh28.只要你的Android端发送它的方式与服务器端期望的相同,它在用户之间是唯一的,对我来说,这将是相当安全的。

按照WCF/Microsoft推荐的方法,您可以使用角色提供程序实现WCF授权。

它包括一个IPrincipal,并注入你的自定义主体,它将从数据库、LDAP等加载角色。

然后,任何WCF方法都可以简单地这样装饰,用于授权:

[PrincipalPermission(SecurityAction.Demand, Role = "ADMIN")]
[PrincipalPermission(SecurityAction.Demand, Role = "OPERATOR")]
public void SomeServiceCall(string foo)
{
    // In your case this would be an AJAX endpoint, not a void method
}

将保护服务调用;在调用者看来,它们甚至不存在。

起点:http://msdn.microsoft.com/en-us/library/ff647040.aspxMicrosoft提供了一个示例角色提供程序的源代码。

还请记住,虽然许多人认为必须实现完整的Membership提供程序,但并不一定要这样做。为此,您只需要一个自定义验证器和角色提供程序。成员资格提供程序的大部分内容可以不被实现。