iOS強制ATS后,DNS劫持問題如何解決?


之前蘋果強制app上傳AppStore必須支持ATS,截至日期是2017年01月01日,但是由於各種原因,導致deadline延期.具體什么時候蘋果會強制ATS,官方暫時還沒有給出明確答復.

支持Https后,一般情況下只會給域名添加證書.導致app所有的http請求都會走域名,這樣就會有DNS劫持的風險.無論wifi網絡下,還是移動網絡根據域名都會去DNS服務解析成ip,然后進行訪問.由於國內網絡環境的原因,都會有DNS劫持的情況,一般會在訪問網頁的時候,在頁面上嵌入一段js代碼,甚至有些情況會出現DNS解析失敗.尤其是用戶達到一定規模,各種網絡狀況都會出現.

這里用移動設備舉例,如果是wifi網絡,一般用戶是不會修改網絡設置的DNS. 很有可能用戶網絡環境由於種種原因,會造成無法訪問http服務.ATS之前的解決方案是可以直接使用ip地址,一般app都會有這樣一個邏輯,從服務器獲取DNS Config,這里面一般配置了domain,ip,protocol,port等屬性,App的請求可以根據DNS Config進行動態調整.但是支持ATS后天,蘋果設置必須支持https.這樣一旦使用域名的http服務,都會有可能遇到DNS劫持的情況.

由於IP不一定能夠長期保持,所以一般不會給ip地址配證書.一旦蘋果強制支持ATS,那么就存在DNS劫持的風險.

 

dig命令查詢DNS解析,下面是解析百度的域名

dig www.baidu.com

; <<>> DiG 9.8.3-P1 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48389
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5

;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION:
www.baidu.com.		380	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	134	IN	A	119.75.218.70
www.a.shifen.com.	134	IN	A	119.75.217.109

;; AUTHORITY SECTION:
a.shifen.com.		194	IN	NS	ns3.a.shifen.com.
a.shifen.com.		194	IN	NS	ns5.a.shifen.com.
a.shifen.com.		194	IN	NS	ns4.a.shifen.com.
a.shifen.com.		194	IN	NS	ns2.a.shifen.com.
a.shifen.com.		194	IN	NS	ns1.a.shifen.com.

;; ADDITIONAL SECTION:
ns4.a.shifen.com.	49	IN	A	115.239.210.176
ns2.a.shifen.com.	580	IN	A	180.149.133.241
ns5.a.shifen.com.	580	IN	A	119.75.222.17
ns1.a.shifen.com.	580	IN	A	61.135.165.224
ns3.a.shifen.com.	238	IN	A	61.135.162.215

;; Query time: 6 msec
;; SERVER: 172.17.16.3#53(172.17.16.3)
;; WHEN: Tue Feb 21 12:25:06 2017
;; MSG SIZE  rcvd: 260

  

瀏覽器直接輸入這兩個ip:119.75.218.70,119.75.217.109,可以直接訪問百度.如果前面加上https://119.75.218.70,進行訪問,由於沒有證書會顯示不安全的鏈接.但是跳過之后還是能夠正常訪問.我用ios設備測試,底層調用https://ip可以正常訪問.各種請求都沒有問題.

如果正常網絡環境下可以用所有的http服務盡量域名訪問,每次啟動app時可以向服務器獲取dig出來的ip作為備用ip,一旦遇到DNS劫持的情況,雖然沒有給ip配證書,但是底層可以使用ip正常訪問.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM