無線安全學習筆記

安全筆記:
1.無線安全需要考慮的範圍:
1)app在設備上的數據安全;
2)app與server在交互過程中的數據安全;
3)app在越獄用戶手機上的安全;
4)server的安全:越權操作檢查,csrf(請求回放),css跨站腳本,sql注入等等;
5)社會工程:員工安全培訓,公司系統權限管理等;
2.無線安全不需要考慮的範圍:
1)iOS系統被越獄的漏洞;
3.app在設備上的數據安全:
1)信息使用加密的方式存儲,可以使用自己想用的任何加密方式,也可以使用ios自帶的保護api進行保護,保護時可在設備未解鎖的狀態下防止文件被訪問,自帶的加密方式密鑰是每臺設備不一樣的,只固化在硬件中,因此較難破解,暴力破解時通過猜測用戶的密鑰來加設備密鑰的方式來進行破解,但每猜錯一次,設備密鑰的獲取時間都會加長,因此安全性較好;只有數字的密鑰時4位破解約18分鐘,4位數字+字母就能達到19天,6位數字+字母要用時196天;
2)加密密鑰以及所有的敏感信息不可以用明文存儲,可以通過服務器端加密存儲的方式,通過動態獲取的方式來每次啓動app時獲取;
3)獲取過程中提供相應的token邏輯很可能被用來做重放攻擊,重放攻擊的防護辦法有:帶時間戳、帶上類似csrf token的內容;https協議也能有效防止回放攻擊,但我試過好像不行;但我們現在似乎沒有做重放攻擊的防護;一方面可能造成服務器端數據異常,另一方面在被ssh的越獄手機上,可能被監聽到用戶的請求,然後攻擊者通過回放來獲取信息?
4.ios與server在交互過程中的數據安全:
1)使用https;
2)用戶名與密碼不能通過明文傳輸;
5.app在越獄用戶手機上的安全:
1)爲防止反編譯分析,必須對關鍵信息的.h文件進行混淆之後再編譯打包;
2)本地信息加密存儲;
3)內存分配釋放要完整,調用已被釋放的對象本會crash,但如果被黑客利用,則可能會執行黑客所準備好的代碼;
4)阻止gdb依附;
5)使用自定義鍵盤代替系統鍵盤,防止錄屏幕(自定義的無屏幕按下效果)和鍵盤緩存被獲取;
6)二進制和資源文件要做自檢;
7)如果越獄手機ssh被破解,https在越獄手機上也可能被監聽的,因此用戶名密碼還是可能泄漏,怎麼整?
8)用過的敏感信息內容記得儘早釋放,如果未釋放而等系統釋放,則信息在內存中駐留時間過長而容易被人獲取;

5.server端的安全,也就是web安全了。

6.其它安全問題:

1)緩衝區溢出概念:通過改寫程序返回地址等方法,使目標程序執行惡意代碼,改寫返回地址就是利用程序調用函數時,需要將返回指標入棧等原理,通過分配額外本地變量,可以破壞棧中的變量,從而達到改寫返回地址的目標,也叫堆棧緩衝區溢出;

2)xcode下需要開啓aslr選項,也就是pie選項(don't create position independent executable),置爲NO;

3)urlschema跳轉方式的攻擊,也是存在的,比如某些惡意程序或h5可以通過微信等的urlschema來使目標手機上的微信添加app或發起視頻聊天等等,比較難防範,需要結合業務進行校驗;

4)db中的信息必須加密存儲,否則會被讀取,ios下的sqlite數據庫提供類似的加密選項;sql語句也要防止被注入;

5)鍵盤如果開啓了自動補全功能則會被記錄輸入記錄,密碼等敏感信息輸入框一定不能這樣,可考慮自定義鍵盤;


7.android安全:
1)防止反編譯,google有混淆方案,核心敏感的代碼用c/c++寫,再用java調用;
2)使用https進行交互,且客戶端對證書進行認證;
3)本地存儲使用加密,而密鑰存在服務器端或使用黑匣子以某些格式存在文件中;
4)使用簽名防止被篡改後的app所替換;
5)url schema安全需要特別分析,需要對數據合法性做校驗;
6)ui webview除js與webview互相調用時嚴格校驗機制外,其安全與web安全一樣,釣魚,xss,csrf,sql注入,爬蟲,重放,機器人抽獎等等;
7)日誌輸出一定關閉,或對敏感信息輸出進行詳細排查;
8)如提供content provider供其它應用訪問數據時,一定要做嚴格的安全認證及權限限制;
9)密碼登錄錯誤次數限制,驗證碼,會話超時重新登錄,手勢密碼,關鍵業務輸入密碼確認等邏輯設置,使手機遺失時安全性提高;(適用iOS)

8.cookie安全
1)禁止在Cookie中記錄機密信息,如要記錄則需要加密簽名處理過後;
2)和登錄認證相關的Cookie必須設置httponly屬性爲true,可以防止css攻擊把cookie帶去第三方站點,也可防止腳本訪問cookie;
3)只在https環境下傳遞的Cookie需要設置secure屬性爲true(ssl);

9.幾個安全概念

1)證書:包括公鑰,來源標識(加密者),信息接收方接收到信息及證書,就可以用證書中的公鑰進行解密;

2)簽名:使用證書對內容進行加密的過程;

3)身份:證書+私鑰可以標識完整的身份,其中一種存在形式也即p12文件;

4)keychain安全性:在非越獄設備上還是安全的,在越獄設備上,keychain完全可以導出,所以最好還是自己加密比較靠譜;

5)流媒體播放:有許多開源的庫解決方案,不需要自己從頭來寫,比較好的如https://github.com/yixia/Vitamio-iOS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章