為了避免自己撰寫出具有安全風險的程式碼而仍不自知,就挑上這堂 從 OWASP Top 10 實現全方位防禦強化 課程。這邊筆記下 注入攻擊與可能的應對方式。
課程相關資訊
[連結]:https://hiskio.com/courses/1539/lectures/146875
本篇範圍:Chapter 2
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
Injection – 注入攻擊
實施方式可以透過 SQL, OS 層或是 LDAP。至於時機點,會有可能在「指令送到系統時,產生不符合預期的指令」、「存取資料無適當授權」、「無過濾控制輸入資料」
攻擊者會用 fuzzy test 模糊測試,看使用者的回吐值是否合理。
防範方式有:
1. 基本的格式驗證,將一些奇怪的語法給排觸除掉。除了自己寫外,也可以使用套件如:NPM – validatorjs
2. 套用資料庫的 Prepared Statement
將變數的位置先保留下來,等真的執行 query 的時候,才將這些接收到的變數值都給資料庫處理。換言之,若你輸入像是 1′ OR ‘1’=’1′ — 這類的字,資料庫會真的去比對欄位中,是否有這樣的字。