最佳实践:如何保护来自移动应用程序的 Http 请求(例如登录)
Posted
技术标签:
【中文标题】最佳实践:如何保护来自移动应用程序的 Http 请求(例如登录)【英文标题】:Best practice: How do I secure Http-Requests (eg Login) from a mobile application 【发布时间】:2011-05-19 10:49:44 【问题描述】:我们有一个 Web 应用程序,它提供了一个简单的“通用 Http 处理程序”(ASP.NET),用于提供一种获取移动应用程序会话的简单方法。 Atm 整个概念/应用程序处于演示/alpha/测试状态 - 所以不要惊恐地举起双手...... :)
我意识到有几个安全问题:
如果移动设备连接到 WLAN(因为所需的嗅探例程非常简单),您可以简单地嗅探请求(以获取用户名/密码的值)和/或响应(以在其他地方重用会话) 我们可以添加一些加密/解密,但由于我们在 android 上,任何人都可以解压缩.apk
-文件并进行一些逆向工程以获取共享密钥(和 salt)
我们可以使用 https://...但是...如果有其他方法我很感兴趣...不选择 SSL 的另一个原因:我们不托管单个 Web 应用程序,所以...应用程序越多,成本就越高……而且,这对公司来说很常见,我们确实想省钱:)
一些侧节点:
由于我们计划让我们的客户有可能通过移动应用程序访问我们的网络应用程序(处理程序只是其中的一部分),因此我们并不真正关心在市场上发布它......但也许这会改变.所以 atm 计划不包括.apk
的“公开赠品”。
我已经对“如何调整响应,以便只有移动应用程序可以有效地使用它”问题进行了一些研究(例如How do I secure a .NET Web Service for use by an iPhone application?)。
我相信这一定是一个更普遍的问题,这不仅是你在 android/co 上要考虑的问题......所以“最佳实践”可能不仅限于 android(你会有相同的iphone 或 winforms 上的场景)- 它更多的是关于:如何处理远程组件以执行重要功能(例如登录、db-access,...)
【问题讨论】:
@Abhinav:我已经为这个问题添加了一段(因为我知道它会发生):我知道有 https:// ......但是......因为我的雇主不是t那个https仿射,我正在寻找另一种可能性。扩展原因:我们多次托管我们的应用程序。每个实例有 n 个租户。所以,我们需要为每个应用程序购买一个证书......非常昂贵:) 啊。可能错过了。不确定替代方案。自己一直在寻找解决方案,但还没有运气。 :) @Abhinav:同样的情况......猜猜这就是我在这里问这个问题的原因:) 【参考方案1】:在应用程序中使用将由所有客户共享的共享密钥绝对不是解决方案。
实际上,您始终可以实现自己的安全协议(使用非对称加密,...)或使用其他协议(安全 RPC,IPsec,...),但实际上 SSL 是更轻量级的解决方案(协议和实现)用于此类用途。此外,由于它很常见,因此部署起来非常容易(= 便宜),并且当前的实现是安全的并且针对性能进行了优化。
【讨论】:
以上是关于最佳实践:如何保护来自移动应用程序的 Http 请求(例如登录)的主要内容,如果未能解决你的问题,请参考以下文章