🎋 竹子日誌

資安漏洞遠比你想像的還要多

日前我和一位滲透工程師聊天,我才知道,原來資安漏洞的問題可以那麼多。原來,不是你的系統資安嚴密不可突破,而是你的系統不夠有價值讓人去盜竊。多數情況的各種軟體其實資安充滿漏洞,先說結論,其實只要使用主流的開發框架,並且遵守許多開發常規,其實資安沒有那可怕。但就是很多人自以為自己懂而任性妄為,導致資安漏洞百出。但也確實有很多小細節是做那麼久都不知道,但也是別人說了才知道。

資安就跟保險一樣,說到底是預算問題

資安其實就跟保險一樣,沒事都沒事,有事很大條。到底要花多少成本在這種東西上?就跟「保全要請多少人?」、「保險要買多大額度?」都一樣是一個沒有正確答案,單純是預算問題。能做就做,做越細越好。其實單純是成本問題。

雖然不會很全面,但可以參考一下。內文我就針對幾個,一定要分享的高價值資安觀念。

五個一定要知道的資安觀念

  1. 前端沒有秘密,只要是在前端的東西,都存在各種辦法被反編譯和盜取。所以前端程式碼要經過壓縮再編碼,如果把具備可讀性的原始碼完整曝露,等於無成本拱手把弱點捧給滲透人員。
  2. 只要有 I/O 就有破口,程式運行操作之中,最容易被攻陷的地方都是 I/O 口。包含向後端打請求、操作外接設備、讀取二進位的實體檔案等等,這些都存在弱點。舉個例子:雖然 Https 有加密,但只要在 Application 就是曝露出來的,可以輕易被任何外掛或惡意程式操作。包含請求送出前或收到後,都有可能存在漏洞。敏感資料盡量先加密後再過 I/O 。舉凡密碼、信用卡、驗證碼⋯⋯各種極其機密的資訊,通通有機會在這個階段被盜取。
  3. 不要輕易使用來路不明的第三方程式,包含瀏覽器外掛、外部連結(不同 Host 之下的來源)。這些都是有機會被攻擊的破口,輕易交出一個可以被操作的漏洞。
  4. 理論上 Client 只能看到屬於自己的資料,但確實有可能某些狀況看到別人的資訊。只要是任何人都可以操作的輸入框都可以是被攻擊的弱點之一,如果輸入的內容又是任何人都可以任意進行輸入,等同於開了一個讓別人可以跨站攻擊的破口。只要是來自前端任何請求,後端應該要做的是「零信任原則」,一定要做資料安全性驗證。
  5. 所有可以寫入 HTML 的字串無論前後端都應該檢查,因為 html 本身就具備各種執行邏輯,所以只要掛上指定的字串本身就有一定的危險性。如果掛上的字串本身又是後端提供的字串,而這段字串又是透過使用者輸入,這就可以構成攻擊破口。最常見的就是在 link 和 src 等等地方注入 JavaScript 攻擊腳本。

留言