- Security Threats
- Denial of Service (DoS) Attack: 應用程式的資源沒有做好檢查與限制,被有意地耗盡資源導致應用程式掛掉
- Sensitive data leak: 敏感性資料意外洩漏
- Code corruption: 程式碼有被改寫的機會
- Code injection: 程式碼因為輸入欄位而被注入不該被執行的程式片段
- DoS Attack
除了盡可能做到防範的機制外,更重要的是建立監控的行為,要有應用程式總是有可能被破解攻擊的心態,因為防範做的再健全,有心人士都還是有可能破解,所以監控反而是更重要的事情,讓我們可以在最快的時間知道我們的應用程式被攻擊了。
- Security Policy
- java .security file 描述general的security內容,並指出相關security檔案位址
- java .policy file 描述permission內容
- java.security.Permission可先驗證行為是否符合.policy檔案內的規範
SocketPermission = new SocketPermission("localhost:7777", "accept, connect, listen");
FilePermission new FilePermission("/someFile", "read, write");
try{
AccessController.checkPermission(socketPermission);
AccessController.checkPermission(filePermission);
} catch (AccessControlException e){
/* access denied by policies */
}
- java.security.Permission 還有一種doPrivilege()的寫法,在doPrivilege()裡面的程式只有符合permission才會執行,否則就不會執行。
5.把路徑的資訊包裝為一個方法來產生,不要直接寫出來,否則資源有可能因為路徑被猜出來而被取用
6.防範當檔案過大時的處理,可以先檢驗檔案大小再執行,或當同一個動作執行過久時做相對應處置
7.注意Deserialize資料的動作,因為若從外部deserialize資料會直接進到Heap Memory而跳過了security的檢驗