資訊安全,是在網路服務日漸擴散的現在,
非常重要的一個問題,
尤其隨著人工智慧漸漸滲透進人類的生活,
數位金融、無人車,等等高價值的資訊服務日漸增多,
對資安有概念,甚而了解並設計資安機制,
已幾乎要成為每個傑出的後端工程師,應具備的技能。
要了解資安,我們就要先了常見的幾種基本攻擊類型,
鑑於筆者為網站工程師,
這邊主要專注的,是網站資安領域的問題喔!
但每個不同領域所遇到的攻擊模式都不同,
因此鼓勵各位讀者嘗試多了解,
自己所處的技術領域區塊,常發生哪些攻擊。
SQL Injection 是很基本但傷害力非常強大的攻擊,
這個攻擊的概念就是,
駭客發現你網站輸入資料的地方有漏洞,
他可以輸入 SQL 語法,來取代應該要填的資料(例如 Email 等等),
而這個 SQL 語法可能是撈取最高權限使用者的資料、
或是移除一整個 Table 的資料等等等,
因此殺傷力非常大。
防禦方法:
不過目前來說,大部分的網站都是使用框架來開發,
而這些框架都是使用 ORM 來處理他們的資料庫,
因此在 ORM 的保護下,不是我們預期的資料格式,
而是 SQL 語法的話,具有基本的保護能力。
XSS 攻擊的影響,大部分會是降低正常使用者體驗,
或是讓正常使用者被植入木馬等惡意程式。
這個攻擊常發生在論壇、平台等大量使用者會輸入資料的網站,
攻擊者會在輸入資料時,輸入惡意的程式碼,
而這段資料就會被儲存、顯示在頁面上,
當其他人打開這個頁面時,就會執行該惡意程式碼,
然後中鏢 say goodbye~
防禦方法:
防範的方法則是針對使用者輸入的資料做處理,
將所有的資料過濾,或是只判定為純文字,
讓攻擊者的惡意程式碼無法被執行。
CSRF 攻擊的影響主要跟開發者本身的網站機制有關,
因此攻擊的影響可大可小,取決於功能面的設計。
CSRF 攻擊全名為『 跨站請求偽造 』,
他的攻擊方式很特殊,假設你的網站有個網址是:
https:www.bank.com/give_money?amount=5000&name=john
這段網址會在你是登入狀態時把 5000 塊匯給 John 。
當你沒有針對這個網址傳遞的資料做驗證,
確認這個請求是從這個網站來的,
攻擊者可能會把相同的網址放在自己的網站,
當被攻擊者不小心雖小點到攻擊者的網站,
而且登入狀態仍無清除,
那他就會雖小匯 5000 塊出去,是非常可怕的。
防禦方法:
目前各大成熟的框架,都有針對傳遞資料做 CSRF 驗證,
網站會產生的一組密碼,並在表單輸出時,檢查那組密碼是否正確。
像下圖中, name = authenticity_token 的資料。

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
這也是一個大陸的資安網站,主要是針對目前生活上的問題去討論,
會比較技術層面一點,可以看到實際解決的思維。
如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~