很感動終於到了最後一天,雖然之前已經參加過兩次了,但可能因為這次是邊工作邊參加,所以比我預期的還要累很多,每天都寫文章寫到懷疑人生XD,才終於有今天的 Day30
也謝謝訂閱、回應我文章的朋友們,連看三十天的文章應該也累了吧XD,真是辛苦你們了,也希望你們喜歡這個系列。鐵人賽結束後我也要去看看其他人寫的文章了~不過今年參賽人數超過一千個(評審們會不會哭出來QQ),好像也不可能全部看完,所以有看到什麼不錯的系列還請大家留言推薦一下~
雖然這三十天是真的爆幹累,但不得不說這個月真的過得非常充實,每天都讀很多跟資安相關的文章,而且也有不少意外的收穫
譬如說有很多我以為我已經懂了的東西(像 SameSite cookie),去查了之後才發現我了解得還不夠透徹,所以就趁這個機會把他補完;或是有一些工具雖然平常有在用(像 nginx),但真的要講解才發現我好像都是直接沿用前人的 nginx.conf
,根本沒有自己寫過多少XD,就決定把官方文件讀完、整理過後再來分享給大家
所以真的要說的話,其實寫這一系列收穫最多的應該還是我自己,所謂教學相長大概就是這樣吧,也希望大家在讀這一系列的過程中有學到一些原本不知道的東西,那這系列也就沒有白寫了~
回到這一系列的主題「從以卵擊石到堅若磐石之 Web API 安全性全攻略」,雖然這三十天確實講了不少方法來保護 API Server,但畢竟資安的世界實在是太廣了,什麼都可以跟安全性扯上關係XD,所以還是有很多東西的安全性都沒有講到(譬如最近越來越熱門的 GraphQL、還有逐漸成為容器編排領域霸主的 Kubernetes),因此在這邊我想跟大家分享我在學習資安領域時的方法:
首先是在學習任何新技術時都要瞭解它的原理跟架構,譬如說你知道 GraphQL Server 底下也是跑一個 HTTP Server,代表他們的弱點可能非常相似,因此你以前怎麼保護 HTTP Server 現在就怎麼保護 GraphQL Server(做輸入驗證、流量限制等等);或是你原本從來不認識 Day18 講到的 JWT(JSON Web Token),但只要聽到 JWT 的 payload 是用 base64 進行編碼,就可以很直覺的反應不能把敏感資料放在 payload 裡面。因此只要你的基礎知識夠扎實,就能很快猜到新技術可能有哪些弱點,進而去保護他
而除了這種靠自己推導出來的之外,我在學習一個新技術時也會去找找看別人都怎麼都怎麼用他,譬如說我最近還在熟悉 GraphQL,那我就會去查 GraphQL best practice
、GraphQL production security
這類的關鍵字,然後把搜尋結果第一頁的文章都看一看(讀到後面會發現講的東西都差不多XD),這樣就可以就可以寫出一個滿安全的 GraphQL Server 了~
最後,雖然鐵人賽結束了,但身為工程師,對於安全性的追求應該是沒有止盡的,所以我之後也會繼續學習資安相關的知識。如果對這系列文還有任何問題或是想討論可以加我的 Facebook 或 Telegram 私訊我,畢竟多年後文章還是會在這裡,但我不見得每天都會上來看留言。如果你喜歡我的文章也歡迎訂閱我們 Starbugs 星巴哥技術週刊,這樣就能每個月都看到我寫的專欄哦~謝謝大家,Larry 我在這邊下台一鞠躬