与一个站点的HTTPS连接(Android)

时间:2010-01-18 17:55:12

标签: android ssl

我正在为Android平台创建一个应用程序,它将使用https与一个站点连接。即使使用有效的SSL证书,也必须无法连接到任何其他站点。我希望它能够抵御每个表单重定向(例如,假装为我需要连接的站点)或其他“攻击”。不幸的是我在Android上找不到任何关于SSL的好教程......你知道吗?我会感激一些链接或建议。或者你可以给我一些代码片段吗?我的应用程序准备使用HttpURLConnection或HttpClient - 我选择哪条路径没有区别。

提前谢谢你:)

3 个答案:

答案 0 :(得分:1)

硬编码网址无法解决此问题?

答案 1 :(得分:0)

如果你真的那么偏执,那么对URL进行硬编码是不安全的,因为当DNS服务器中毒时,URL可以指向不同的IP。但这些不太可能发生。

硬编码IP可以帮助避免这个问题,因为服务器是在没有DNS名称解析的情况下直接访问的。

答案 2 :(得分:0)

我想指出,提问者的偏执是非常合理的。假设该站点具有由有效证书颁发机构签署的证书(并且应用程序对其进行检查),那么他通常是安全的,但正如最近的历史所证明的那样,CA并非完全无误。

单独对URL进行硬编码无助于防止中间人攻击。如果您知道自己只是要连接到一个站点,则可以将站点的证书或公钥硬编码到您的应用程序中,这一过程称为证书固定。这可以确保除非有人获得该站点私钥的副本(在这种情况下,您无论如何都会沉没),您可以放心,您正在与该站点进行通信,因为只有站点私钥的持有者才能发送消息使用站点的公钥进行解密。供参考:

实现:
https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning#Public_Key_Checks

一般信息:
http://www.netspi.com/blog/2013/04/01/certificate-pinning-in-a-mobile-application/

偏执狂是处理安全问题时的标准程序,并且有充分的理由。