iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
自我挑戰組

Java SE系列 第 27

Day27:危機意識

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

上一篇
Day26:救世主
下一篇
Day28:阿賴耶識
系列文
Java SE30

尚未有邦友留言

立即登入留言