| 弱點類型 | 危害 | 典型代碼模式 |
|---|---|---|
| XSS (跨站腳本) | 竊取 Cookie、劫持會話、釣魚、惡意下載、鍵盤記錄 | pw.print("Thanks, " + request.getParameter("name") + "!"); 無過濾直接輸出 |
| SQL 注入 | 繞過認證、數據竊取/篡改/刪除、提權、RCE | "SELECT * FROM users WHERE name='" + name + "'" 字符串拼接 |
| 本地方法 (JNI/JNA) | 引入 C/C++ 緩衝區溢出、指針錯誤、內存洩漏,繞過 Java 沙盒 | native void unsafeOp(byte[] data); 無邊界檢查傳遞給 C |
try {
firstname = request.getParameter("firstname");
} catch (Exception e) { e.printStackTrace(); }
userName = firstname;
// ...
pw.print("Thanks for your feedback, " + userName + "!");
攻擊者輸入:<script>sendDataToMotherShip()</script> → 受害者瀏覽器執行惡意代碼。
<→<)、JS 編碼、CSS 編碼、URL 編碼${} 默認轉義Content-Security-Policy: script-src 'self' 禁用內聯腳本GetByteArrayElements/ReleaseByteArrayElements 配對、邊界檢查、異常處理、ExceptionCheck()commons-collections 反序列化、log4j2 JNDI 注入| 層面 | 措施 |
|---|---|
| 開發期 | 安全編碼規範、IDE 靜態分析插件、Code Review 安全清單 |
| 構建期 | CI 集成 SAST (Fortify/SonarQube/Checkmarx)、SCA (OWASP Dependency-Check) |
| 測試期 | DAST (OWASP ZAP)、滲透測試、模糊測試 |
| 運行期 | WAF、RASP (Runtime Application Self-Protection)、安全日誌審計 |
| 生態層 | 依賴升級自動化 (Dependabot/Renovate)、CVE 訂閱、供應鏈安全 (SLSA) |
request.getParameter() 直接輸出到 HTML/JS/CSQL 的點安全不是功能,是質量屬性。「開發者承擔全部責任」 —— 沒有銀彈,唯有體系化工程紀律能築起防線。