ym  ·  02月07日

大家好,最近以工作上不太有機會用到的技術來練習專案:

https://goods.carrier.express

使用 Astro + Solid.js,搭配 Sanity.io 當作內容管理

除了想要獲得操作的流暢度回饋以外,

還想要知道「夠不夠安全」?

其實也只是 secret key 放在 environment variable。

之前曾經以相同的方法取用 secret,在面試時,對方一下子就從瀏覽器挖出使用的 secret,

感覺很像當場被扣到 0 分,

事後在社群問怎麼解決,得到回饋大多是「前端沒有秘密」。

想知道怎麼做,才可以在安全問題達到基本要求呢?謝謝!


共有 3 則留言

關於 key 這種東西,通常都是放在 .env 檔內沒錯

至少沒放進 git repo,可以確保只有「擁有主機權限」的開發者可以拿到。

這樣就夠安全了:因為如果駭客連主機權限都拿到了,那代表系統被嚴重入侵了


工作上常用的 api key 又分兩種,前端用的&後端用的

前端用的 key 本來就容易在瀏覽器被洩露

後端用的 key 就不會

這兩種 key 要做兩種額外防護

前端的 key:請在 api 提供商那邊,設定「限制可存取的網域」,也就是只有用戶在逛特定網站才能使用 -> 一定要做,不然 key 會被別人拿去用

後端的 key:請在 api 提供商那邊,設定「限制可存取的 IP」,也就是只有在特定主機上才能使用 -> 其實不做也沒關係,後端的 key 不太會洩漏,就是多一層保障而已

所以,請查看一下你所使用的 api 管理面板,應該有可以設定的地方~


以上,簡單回饋,希望有回答到~

按讚的人:

如果條件允許的話, 儘量不要在前端留下任何服務的 key
讓後端代爲發送API請求
尤其是要按使用量付費的那種
因爲就算設定了可存取網域, 還是可以有別的方式可以騙過服務商去用你的 key 打 API
如果剛好遇到無聊的人一晚上狂打直接刷爆你/你公司的信用卡就欲哭無淚了

按讚的人:

長知識...

上次我 google map api 被盜刷 200 美金,至今我都不知發生啥事...