我正在为Android平台创建一个应用程序,它将使用https与一个站点连接。即使使用有效的SSL证书,也必须无法连接到任何其他站点。我希望它能够抵御每个表单重定向(例如,假装为我需要连接的站点)或其他“攻击”。不幸的是我在Android上找不到任何关于SSL的好教程......你知道吗?我会感激一些链接或建议。或者你可以给我一些代码片段吗?我的应用程序准备使用HttpURLConnection或HttpClient - 我选择哪条路径没有区别。
提前谢谢你:)
答案 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/
偏执狂是处理安全问题时的标准程序,并且有充分的理由。