6個安全編碼檢視小技巧
這篇文章主要介紹幾個常見的編碼問題的識別,
如何透過常見的關鍵字或是特徵識別出編碼上可能會產生的安全風險
1. 檔案的輸入與輸出
檢查重點: 檢查的重點在於檔案檔名, 路徑與資料輸入的合法性較驗
資訊安全風險:
程式碼關鍵字範例:
openFileOutput, FileInputStream, FilterInputStream, SequenceInputStream
ObjectInputStream, PipedInputStream, StreamTokenizer, getResourceAsStream
java.io.FileReader, java.io.FileWriter, java.io.RandomAccessFile, java.io.File, java.io.FileOutputStream
2. 網站參數
檢查重點: 資料輸入的驗證
資訊安全風險: 注入攻擊, 例如 XSS, SQLi
程式碼關鍵字範例:
getParameterNames, getParameter, getParameterValues, getParamaterMap
getHeader, getRequestURL, referer, Statement, StartWith, EndWith
3. 密碼相關
檢查重點: 弱加密算法
資訊安全風險: 使用不安全的加密算法, 導致黑客破解密碼系統
程式碼關鍵字範例:
java.util.Random, SHA-1, DES, MD5, RC4
password, pass, pwd, encryp, rand,
4. 執行危險函數
檢查重點: 程式中採用危險執行函數, 建議不使用這些函數
資訊安全風險: 黑客利用參數輸入執行腳本, 造成 OS command injection
程式碼關鍵字範例:
eval, getRuntime.exec, getRuntime.cmd,
5. 網絡通訊端口
檢查重點: 程式中間接開放或是連接其他網絡通訊端口
資訊安全風險: 額外的通訊端口可能造成黑客網絡攻擊的管道 造成後門
程式碼關鍵字範例:
1024~65535
6.敏感性資訊註釋
檢查重點: 程式碼過多的註解, 例如加密算法說明, 後台鑑權處理邏輯, 作者訊息, 電話, email, 帳號密碼等
資訊安全風險: 黑客透過這些註解獲取攻擊的方式
程式碼關鍵字範例:
//
/*;*/
<!-;–>
rem
::
#