iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 28
3
Modern Web

菜鳥後端工程師的第一門課系列 第 28

[Day28] 資安常見攻擊( Web ) 與學習方法

資安常見攻擊( Web ) 與學習方法

資訊安全,是在網路服務日漸擴散的現在,
非常重要的一個問題,
尤其隨著人工智慧漸漸滲透進人類的生活,
數位金融、無人車,等等高價值的資訊服務日漸增多,
對資安有概念,甚而了解並設計資安機制,
已幾乎要成為每個傑出的後端工程師,應具備的技能。

常見攻擊類別

要了解資安,我們就要先了常見的幾種基本攻擊類型,
鑑於筆者為網站工程師,
這邊主要專注的,是網站資安領域的問題喔!
但每個不同領域所遇到的攻擊模式都不同,
因此鼓勵各位讀者嘗試多了解,
自己所處的技術領域區塊,常發生哪些攻擊。

SQL Injection

SQL Injection 是很基本但傷害力非常強大的攻擊,
這個攻擊的概念就是,
駭客發現你網站輸入資料的地方有漏洞,
他可以輸入 SQL 語法,來取代應該要填的資料(例如 Email 等等),
而這個 SQL 語法可能是撈取最高權限使用者的資料、
或是移除一整個 Table 的資料等等等,
因此殺傷力非常大。

防禦方法:
不過目前來說,大部分的網站都是使用框架來開發,
而這些框架都是使用 ORM 來處理他們的資料庫,
因此在 ORM 的保護下,不是我們預期的資料格式,
而是 SQL 語法的話,具有基本的保護能力。

XSS

XSS 攻擊的影響,大部分會是降低正常使用者體驗,
或是讓正常使用者被植入木馬等惡意程式。
這個攻擊常發生在論壇、平台等大量使用者會輸入資料的網站,
攻擊者會在輸入資料時,輸入惡意的程式碼,
而這段資料就會被儲存、顯示在頁面上,
當其他人打開這個頁面時,就會執行該惡意程式碼,
然後中鏢 say goodbye~

防禦方法:
防範的方法則是針對使用者輸入的資料做處理,
將所有的資料過濾,或是只判定為純文字,
讓攻擊者的惡意程式碼無法被執行。

CSRF

CSRF 攻擊的影響主要跟開發者本身的網站機制有關,
因此攻擊的影響可大可小,取決於功能面的設計。
CSRF 攻擊全名為『 跨站請求偽造 』,
他的攻擊方式很特殊,假設你的網站有個網址是:
https:www.bank.com/give_money?amount=5000&name=john
這段網址會在你是登入狀態時把 5000 塊匯給 John 。
當你沒有針對這個網址傳遞的資料做驗證,
確認這個請求是從這個網站來的,
攻擊者可能會把相同的網址放在自己的網站,
當被攻擊者不小心雖小點到攻擊者的網站,
而且登入狀態仍無清除,
那他就會雖小匯 5000 塊出去,是非常可怕的。

防禦方法:
目前各大成熟的框架,都有針對傳遞資料做 CSRF 驗證,
網站會產生的一組密碼,並在表單輸出時,檢查那組密碼是否正確。
像下圖中, name = authenticity_token 的資料。

DDoS

DDoS 是很無腦,但殺傷力驚人,會影響到所有使用者的可怕攻擊,
DDoS 就是所謂的殭屍攻擊,利用電腦或機器人,
使用如潮水般的流量,傳到被攻擊的網站,
而這個被攻擊的網站,就會因為要回復這些多到爆炸的請求,
所以被癱瘓,甚至當機。

防禦方法:
這個要在機器端去做調整,
可以說針對某 ip 如果請求資源數超過一定比例,就阻擋掉,
或是針對資源消耗異常狀況,做出調整或限制。

檔案上傳漏洞

檔案上傳漏洞的影響,會取決於你的網站管理員在哪裡開啟使用者上傳的檔案,
例如一個網站如果需要身份證圖片驗證,
而惡意使用者在該上傳圖片的地方,上傳了一個會執行惡意程式碼的檔案,
那後台使用者打開該檔案時,就會造成該使用者的電腦中鏢。

防禦方法:
可以在程式碼里針對檔案副檔名做驗證,
設定只有 jpg, png ,或你限定的檔名,
另外也可以切割該檔案儲存位置和網站應用程式的位置,
避免被感染。

重要資訊未加密

目前仍有接近一半的網站沒有 Https 加密,
也就是傳遞的資料是沒有被加密過的。
此外,有些重要資訊,要再做更複雜的加密,
像是使用者設定的帳號、繳費資訊等等等,
如果被截取了,就有機會被盜用帳號或盜刷等情形發生。

防禦方法:

除了使用業界推薦的幾個常用加密法,
也建議自行設定加密邏輯,
例如將加密後的字串再倒置,
或做第二層的加密等等。

推薦平台

在資安領域的精進主要要看三件事:
『打比賽』、『參與社群』、『閱讀』,
其實在程式的世界做學習,也是相同的三個面向,
只是資安更強調這幾項。

比賽

資安界的比賽就是所謂的 CTF ,
透過程式能力解決問題,並得到點數,

以下是網友推薦初學者入門可以參考的CTF 網站:
https://ctflearn.com/
https://bamboofox.cs.nctu.edu.tw/
https://hackme.inndy.tw
http://pwnable.kr/play.php

再來是幾個 CTF 的整理:
CTF的各種資源
https://github.com/apsdehal/awesome-ctf
CTF的解題工具
https://github.com/zardus/ctf-tools

推薦初學者先大致了解比賽的形式,
以及大家的競爭方向,
來理解說自己要開始學習,可以從哪塊來學習。

參與社群

資安的社群除了每年都有一次 Hitcon,
也可以參與大部分由學生組成的
tdohacker : https://www.facebook.com/tdohacker
參與社群的好處是,能夠提升對資安的熱門度,
而且針對難解的問題,會有各方高手可以提供解答,
是個維持學習熱誠的好方法。

閱讀

歡迎新手嘗試以下的閱讀資料:
https://www.freebuf.com/
一個大陸的資安閱讀網站,提供大量入門級的資安閱讀資源,
可以多多掌握目前資安的生活趨勢。

https://bbs.ichunqiu.com/portal.php
這也是一個大陸的資安網站,主要是針對目前生活上的問題去討論,
會比較技術層面一點,可以看到實際解決的思維。

如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~


上一篇
[Day27] Devops - 快取( Cache ) 和 CICD
下一篇
[Day29] 工程師求職資源分享
系列文
菜鳥後端工程師的第一門課30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言