大家好,最近以工作上不太有機會用到的技術來練習專案:
使用 Astro + Solid.js,搭配 Sanity.io 當作內容管理
除了想要獲得操作的流暢度回饋以外,
還想要知道「夠不夠安全」?
其實也只是 secret key 放在 environment variable。
之前曾經以相同的方法取用 secret,在面試時,對方一下子就從瀏覽器挖出使用的 secret,
感覺很像當場被扣到 0 分,
事後在社群問怎麼解決,得到回饋大多是「前端沒有秘密」。
想知道怎麼做,才可以在安全問題達到基本要求呢?謝謝!
關於 key 這種東西,通常都是放在
.env
檔內沒錯至少沒放進 git repo,可以確保只有「擁有主機權限」的開發者可以拿到。
這樣就夠安全了:因為如果駭客連主機權限都拿到了,那代表系統被嚴重入侵了
工作上常用的 api key 又分兩種,前端用的&後端用的
前端用的 key 本來就容易在瀏覽器被洩露
後端用的 key 就不會
這兩種 key 要做兩種額外防護
前端的 key:請在 api 提供商那邊,設定「限制可存取的網域」,也就是只有用戶在逛特定網站才能使用 -> 一定要做,不然 key 會被別人拿去用
後端的 key:請在 api 提供商那邊,設定「限制可存取的 IP」,也就是只有在特定主機上才能使用 -> 其實不做也沒關係,後端的 key 不太會洩漏,就是多一層保障而已
所以,請查看一下你所使用的 api 管理面板,應該有可以設定的地方~
以上,簡單回饋,希望有回答到~