2012-12-25 48 views
4

我需要確保我的IOS應用程序在連接到給定服務器時需要DNSSec。我如何確保DNS調用始終使用此?如何製作IOS應用*需要* DNSSec?

+0

看起來像ios不支持dnssec呢。檢查https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/NetworkingConcepts/AddressingSchemesandDomainNames/AddressingSchemesandDomainNames.html –

+0

只是好奇,爲什麼你想要這個? – mpontillo

+0

@Mike我的iOS用戶使用Wifi,並且[很容易被黑客攻擊(鏈接)](http://security.stackexchange.com/q/6827/396) – LamonteCristo

回答

-1

DNSSec位於操作系統級別。您可以在應用程序中控制的唯一一件事是連接到您的服務器的方法。只需在您的所有通信中使用Secure Sockets Layer - SSL即可。

0

由於DNSSEC在操作系統級別上不可用,我認爲您的最佳選擇是通過比操作系統自然更仔細地檢查您的SSL服務器來保護您的應用程序。詳情請參閱this question。我建議將您希望收到的CA證書嵌入到您的應用中,並將其逐字節地與信任鏈的根進行比較。

這叫做certificate pinning

2

您必須將DNS庫合併到您的源代碼中。嘗試使用libunbound。通過libunbound,您可以驗證DNSSEC答案。有了這個,你可以嘗試使用DANE來保護你的SSL證書。

+0

但是,如何使用此方法使用高級(例如)HTTP API?一旦你發送了URL,它就全部結束了。您無法比較DNS答覆的準確性。在做DNS查詢之後,你甚至不能發送'http:// mpontillo

+0

如果您的高級HTTP庫不支持DNSSEC,那麼您需要自己進行DNS查找(使用未綁定),然後如果驗證結果,請使用HTTP API發出該命令。請注意,您不能在HTTP請求中使用域,因爲HTTP庫可能會以非DNSSEC方式進行DNS查找,並且如果域是dns中毒,則該庫仍將連接到流氓站點。您需要將您驗證的IP地址傳遞給HTTP庫(並根據需要使用/添加主機頭) –