為了避免自己撰寫出具有安全風險的程式碼而仍不自知,就挑上這堂 從 OWASP Top 10 實現全方位防禦強化 課程。這邊筆記下 指定注入攻擊與可能的應對方式。
課程相關資訊
[連結]:https://hiskio.com/courses/1539/lectures/160744
本篇範圍:Chapter 2
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
由於未對傳入的指令文字進行過濾,就有可能執行未經授權的操作。
例如當你使用 curl 存取資料時:
1 2 3 4 |
1. ;cat+/etc/passwd ; 代表指令中斷,但仍可往下執行 + 會被解析成「空白」 因此當前面的指令中斷後,執行的指令就是 cat /etc/passwd (印出 etc 資料夾下的密碼 ) |
以 php 為例 :
1. 可使用 escapeshellarg,那整體字串會作為一個整體去執行,就不會觸發 ; 指令中斷的情況了
2. 用內建的 basename 取得路徑最後的 path,然後搭配 readfile() 函式
3. 於 php.ini 的設定檔中,設定 disable_functions 將外部不可執行的函式關閉,像是 exec
4. 路徑白名單
5. 路徑黑名單 – 由於黑名單列在其中的才會阻止使用,因此不建議使用。