歡迎來到網絡安全的世界!

你好!今天,我們將深入探討 H2 Computing 旅程中最令人興奮且與時並進的章節:網絡安全(Cybersecurity)。在我們幾乎所有活動都在線進行的時代,學習如何保護數據和系統不僅僅是為了電影中的「黑客」—這對每一位計算機專業人員來說,都是一項至關重要的技能。

如果起初覺得某些術語令人生畏,請不必擔心。我們會將它們拆解成淺顯易懂的部分,並輔以豐富的故事和比喻來幫助你理解。讓我們開始吧!


1. 在新加坡保護數據:PDPA

在談論技術之前,我們需要談談法律。在新加坡,個人資料保護法令(Personal Data Protection Act, PDPA)是組織在處理你的個人資料時必須遵守的「規則手冊」。

PDPA 涵蓋了什麼?

PDPA 規範了關於個人資料(即能夠識別你身份的數據,例如身份證號碼、電話號碼,甚至是你的面容)的三項主要活動:

1. 收集(Collection): 組織必須有正當理由要求提供你的數據,並且通常需要徵得你的同意。
2. 使用(Use): 他們只能將你的數據用於已向你說明並同意的目的。
3. 披露(Disclosure): 未經你的允許,他們不能將你的數據提供給第三方。

比喻:想像你為了參加積分計劃而將電話號碼交給了一家珍珠奶茶店。根據 PDPA,他們不能開始利用該號碼向你推銷保險(錯誤的使用),也不能將你的號碼出售給其他公司(錯誤的披露)。

快速回顧:PDPA 的三大支柱

收集: 要求提供數據。
使用: 對數據進行操作。
披露: 分享數據。


2. 社會工程學:入侵人類的心理

有時,最容易「入侵」計算機的方法並非通過代碼,而是通過欺騙使用者。這被稱為社會工程學(Social Engineering)

常見的社會工程學攻擊

網絡釣魚(Phishing): 發送偽裝成受信任來源(例如你的銀行)的虛假郵件或訊息,誘騙你點擊連結或交出密碼。
偽裝欺騙(Pretexting): 創造一個虛假的場景(即「藉口」)來竊取訊息。例子:有人打電話給你,假裝是「IT 技術支援」,並聲稱他們需要你的密碼來修復帳戶中的「嚴重錯誤」。
肩窺(Shoulder Surfing): 在公共場合直接從別人的肩膀上方偷看他們輸入 PIN 碼或密碼。

記憶口訣: People Play Secretly(網絡釣魚 Phishing、偽裝 Pretexting、肩窺 Shoulder Surfing)。

重點提示: 永遠要核實要求你提供訊息的人員或網站的身份!


3. 惡意軟件:「數碼流感」

惡意軟件(Malware)是「Malicious Software」的縮寫。它是任何旨在損害計算機系統或獲取未經授權訪問權限的程序。

認識惡意軟件家族

病毒(Viruses): 依附於合法文件,並在文件被打開時傳播的程序。它們需要一個「人類宿主」來採取行動。
蠕蟲(Worms): 它們比病毒更「獨立」且更「聰明」。它們可以自我複製,並在無需任何人工干預的情況下自動在網絡中傳播。
木馬(Trojans): 以希臘歷史中的木馬命名。它們看起來像是實用或有趣的程序(例如免費遊戲),但內部隱藏了惡意代碼。
勒索軟件(Ransomware): 這會鎖定或加密你的文件,並索取「贖金」以換取恢復文件的權限。

常見的錯誤: 別把病毒和蠕蟲搞混了!病毒需要你採取行動(例如打開附件),而蠕蟲則會自行在網絡中穿梭。


4. 拒絕服務(DoS)攻擊

拒絕服務(Denial-of-Service, DoS)攻擊就像是一種阻塞店鋪門口的數碼抗議。其目的不是竊取數據,而是使服務對合法用戶無法使用(Unavailable)

運作原理:

攻擊者向服務器發送大量請求,導致服務器因負載過重而崩潰或速度極度緩慢。這直接攻擊了系統的可用性(Availability)

比喻:想像 500 個根本沒打算買東西的人突然同時擠進一家小咖啡館。真正想買咖啡的顧客甚至無法進入大門。


5. Web 應用程序漏洞

網站通常使用與數據庫互動的代碼構建。如果代碼編寫不嚴謹,黑客就可以利用這些「漏洞」進行攻擊。

「三大」漏洞

1. SQL 注入(SQL Injection, SQLi): 攻擊者將惡意 SQL 代碼插入到輸入框(如登入框)中,誘騙數據庫洩漏隱秘數據。
2. 跨站請求偽造(Cross-Site Request Forgery, CSRF): 這會誘騙已登入的用戶點擊一個連結,該連結會執行用戶未預期的操作(例如更改密碼或轉帳)。
3. 文件包含(File Inclusion): 當 Web 應用允許用戶輸入文件路徑時會發生這種情況,攻擊者可能藉此訪問本不應被看到的服務器敏感文件。

如何守護堡壘(解決方案)

輸入驗證(Input Validation): 檢查所有用戶輸入的數據。如果預期是電話號碼,就不要接受字母或符號(如 \( ' \) 或 \( ; \))。
預編譯 SQL 陳述式(Prepared SQL Statements): 不要手動構建查詢字符串,而應使用佔位符。這會將用戶輸入視為「單純的數據」而非「可執行的代碼」。
CSRF 令牌(CSRF Tokens): 為每個請求使用獨特且隱秘的「印章」,以便服務器能驗證請求確實來自真實用戶。
文件權限(File Permissions): 在服務器上設置嚴格的規則,使 Web 應用只能訪問特定文件夾,而不能訪問其他內容。

快速回顧:SQLi 防禦

糟糕的做法: 像這樣構建查詢:"SELECT * FROM users WHERE name = " + userInput
好的做法: 使用預編譯陳述式(Prepared Statements)輸入驗證(Input Validation)將「惡意代碼」拒之門外!


6. 加強網絡安全

當我們在網上發送數據時,需要工具來確保其安全。我們主要通過三種方法實現:

1. 加密(Encryption): 將數據攪亂,只有擁有「密鑰」的人才能閱讀。這確保了機密性(Confidentiality)
2. 數碼簽署(Digital Signatures): 一種證明訊息未被篡改(完整性,Integrity)以及證明發送者身份(不可否認性,Non-repudiation)的方法。
3. 身份驗證(Authentication): 證明「你就是你」的過程(例如使用密碼、指紋或手機簡訊驗證碼)。

你知道嗎? 當你在瀏覽器網址列看到鎖頭圖標時,這意味著該網站正在使用加密來保護你的計算機與其服務器之間傳輸的數據!


最終總結清單

在繼續學習之前,請確保你能:
• 解釋 PDPA(收集、使用、披露)。
• 描述社會工程學(網絡釣魚、偽裝、肩窺)。
• 區分各種類型的惡意軟件(病毒、蠕蟲、木馬、勒索軟件)。
• 解釋 DoS 攻擊如何影響可用性。
• 識別 SQLiCSRF,並知道如何修復它們(輸入驗證、預編譯陳述式、令牌)。
• 理解加密身份驗證如何維護網絡安全。

你做得到!網絡安全是一個廣闊的領域,但只要掌握了這些基礎知識,你就已經邁向成為一名精明的計算機專業學生的康莊大道。請繼續練習那些 SQL 注入防禦方法吧!