我需要通过Android应用程序向Web服务发出请求。 可以根据需要设计Web服务。
在我看来,无论我选择哪种方法,有人想要破解它,只需要对我的Android应用程序代码进行逆向工程(这不是很难), 可以看到我到底做了什么,我加密数据,使用硬编码密码或任何其他解决方案。
是否有100%安全的解决方案?
答案 0 :(得分:6)
没有100%安全,你所能做的只是让你的攻击者更难。你可以考虑的事情:
加密 - 通过加密渠道传递您的请求将会停止 基本的嗅探(这可以用MITM来对抗)
混淆 - 当他们做反编译你的应用时,你的意图更难理解
第二部分是缓解 - 能够注意到您的应用程序何时遭到入侵并处理它。处理此问题的典型方法是在第一次运行时为每个客户端分配一个唯一的令牌,然后在每次调用服务时将其作为参数传递。
这样一来,如果有人反编译您的应用并弄清楚如何调用您的服务,您至少可以开始监控滥用请求的来源,并监控可疑行为(即短时间内来自同一个密钥的多个请求)不同的IP地址)。从那里你可以开始阻止密钥。
答案 1 :(得分:2)
你担心“黑客攻击”,但任何安全讨论的基础都是定义风险。
你想要保护什么?
例如,您是否试图防止攻击者阅读其他人与服务器的连接?
针对此方案的简单而安全的解决方案是为对称加密密钥使用非对称密钥交换,或使用执行此操作的现有协议(例如HTTPS)。嵌入服务器的私钥(如果使用HTTPS,则为证书)也可以防御中间人攻击。对您的应用进行逆向工程不会对此处的攻击者有所帮助。