2011-12-19 100 views
7

我需要通过android应用程序向Web服务发出请求。 可以根据需要设计web服务。安全的Web服务请求

在我看来,不管我选择哪种方法,有人想要破解它,只需要逆向工程我的Android应用程序代码(这不是非常困难),并且我可以看到我正在做什么,然后我加密数据,使用硬编码密码或任何其他解决方案。

是否有解决方案将100%安全?

+0

看看这个。我想他们问的是同样的问题:http://stackoverflow.com/questions/2320937/securing-communication-from-android-to-a-web-service – eboix 2011-12-19 23:09:05

+0

我在提问之前已经阅读过这个答案 - 但我不认为它解决了逆向工程应用程序的问题。 – 2011-12-20 10:47:51

+0

您可以对数据进行加密,将密钥的散列存储在数据库中,并对数据库进行加密。这应该是更难以破解 – Mal 2011-12-20 12:11:21

回答

6

没有100%安全,所有你能做的就是让你的攻击者更难。事情你可以考虑:

  • 加密 - 通过加密通道传递您的请求将会停止 基本嗅探(这可以用MITM被反击)

  • 混淆 - 使你的意图很难理解当他们反编译你的应用程序

的第二部分,这是缓解 - 当你的应用程序已经被破坏的通知和处理的能力。处理这种情况的典型方法是在首次运行时为每个客户端分配一个唯一的令牌,然后将其作为参数传递给您的服务。

这样,如果有人反编译你的应用程序,并计算出如何调用你的服务,你至少可以开始监视滥用请求的来源,并监视可疑行为(即在短时间内来自同一个键的多个请求跨越不同的IP地址)。从那里你可以开始阻止键。

+1

+1良好的答案,最好的希望 - 准备最糟糕的 – amelvin 2012-02-01 23:22:16

+0

看到这个http://shabbirdhangot.wordpress.com/2014/07/12/secure-web-service-url-in-android/ – 2014-08-11 07:43:14

2

你担心“黑客攻击”,但任何安全性讨论的基础都是定义风险。

你想要防范什么?

例如,您是否试图防止攻击者读取其他人与服务器的连接?

此方案的一个简单而安全的解决方案是使用非对称密钥交换作为您的对称加密密钥,或使用执行此操作的现有协议(例如HTTPS)。嵌入服务器的私钥(或使用HTTPS的证书)来抵御中间人攻击。逆向工程您的应用程序将无助于攻击者。