【科技友瘋狂】資安入門教學:開發者必懂的攻防基礎與實作觀念

關鍵字 :全端工程師修煉日記資安入門SQL InjectionXSS開發者資安

在寫程式的過程中,你是否想過以下問題:

  • 使用者密碼是怎麼被盜走的?

  • SQL Injection 到底是什麼?

  • 為什麼網站登入頁面要加上 CSRF Token?

  • 檔案上傳功能怎麼防止惡意程式?

如果你只專注在功能開發,忽略了安全性,那麼你寫出來的程式可能早晚都會出現漏洞。
資訊安全不只是資安工程師的事,每一位開發者都需要懂得防禦基礎。

這篇文章將帶你快速入門資安的核心觀念與開發實務,幫助你寫出更安全的程式。


一、資安是什麼?為什麼你要在意?

資安(Cybersecurity)目的是保護資訊的機密性、完整性與可用性(簡稱 CIA 三要素)。

要素 說明
機密性(Confidentiality) 防止未授權者取得資料
完整性(Integrity) 確保資料未被未授權更動
可用性(Availability) 確保系統服務正常可用

資安不是可有可無,而是你系統活著的前提


二、常見攻擊手法與防禦觀念

1. SQL Injection

當輸入值被直接拼接進 SQL 查詢時,攻擊者可能送出:

' OR '1'='1

導致原本的查詢邏輯被繞過。

防禦方法:

  • 一律使用參數化查詢(Prepared Statement)

  • 不要直接拼接字串組成 SQL


2. XSS(跨站腳本攻擊)

攻擊者將 JavaScript 代碼注入到頁面中,例如留言板中塞入:

<script>alert('XSS')</script>

當其他使用者打開頁面時,就會被執行。

防禦方法:

  • 對輸入進行編碼處理(HTML Escaping)

  • 使用 Content Security Policy(CSP)


3. CSRF(跨站請求偽造)

使用者在登入狀態下,點了攻擊者提供的連結,導致系統誤認並執行敏感操作。

防禦方法:

  • 表單中加上 CSRF Token

  • 驗證請求來源 Referer 或 Origin 標頭


三、密碼儲存的正確做法

千萬不能用明碼儲存密碼!

正確流程應如下:

  1. 使用者輸入密碼

  2. 使用強雜湊函式(如 bcrypt, Argon2)進行雜湊處理

  3. 儲存雜湊值(含 salt)

Node.js 範例:

const bcrypt = require('bcrypt');
const hash = await bcrypt.hash(plainPassword, 10);
const match = await bcrypt.compare(inputPassword, hash);

四、資安開發建議

  • 輸入驗證要做雙層:前端限制 + 後端驗證

  • 所有檔案上傳都要檢查 MIME 類型與副檔名

  • 所有 API 都要驗證權限與身份(token 驗證)

  • 錯誤訊息不要回傳敏感資訊(如 stack trace)


五、資安測試工具簡介

工具 功能
OWASP ZAP 網頁應用程式弱點掃描
Burp Suite 攔截、重送、測試 HTTP 請求
SQLMap 自動化 SQL Injection 掃描
Hashcat 密碼雜湊暴力破解
Nikto 掃描 Web 伺服器設定與漏洞

你可以先從 OWASP ZAP + DVWA(測試用漏洞站)開始練習。


結語:資安從來不是別人的責任,而是每位開發者的基本素養

你不需要是專職資安工程師,但你寫的每一行程式碼,都是潛在的入口


從最常見的漏洞開始了解,從正確的 API 設計與資料儲存方式做起,
你就能讓系統更安全、更可靠,也讓自己的技能更加完整。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論