新標題:保護API金鑰:在客戶端JavaScript中隱藏的方法
P粉521748211
2023-08-24 10:22:46
<p>現在我正在編寫一個客戶端JavaScript應用程序,該應用程式向USPS價格計算器API發出請求。為了進行此請求,我需要在請求的XML中提供我的API使用者ID。標籤如下:<code><RateV4Request USERID="ThisIsWhereMyUserIdGoes"></code>。我的問題是:有沒有辦法在JavaScript中提供我的使用者ID,同時仍然隱藏它,不讓使用者看到客戶端檔案。目前,我唯一的解決方案是在我的伺服器上建立一個包含使用者ID的PHP文件,然後在客戶端JavaScript中使用AJAX請求將其儲存在全域變數中。代碼如下:</p>
<pre class="brush:php;toolbar:false;">var userID;
$.get("/secrets.php", function( data ) {
userID = data;
});</pre>
<p>這種方法足以防止我的API用戶ID被我的應用程式用戶看到嗎?還有其他辦法可以做到這一點? </p>
如果您在2020年閱讀此頁面,並且出於某種原因(節省託管成本等)不想開發伺服器端程式碼,無伺服器函數可能是解決方案。
這也從伺服器端呼叫第三方API,但您不必開發一個完整的伺服器端API代理。
Netlify有相關文件。我猜其他提供者如AWS Lambda、Google Cloud Function也提供類似的功能,但不確定。
https://github.com/netlify/code-examples/tree/master/function_examples/token-hider
優點 無需管理伺服器
缺點 供應商鎖定
簡而言之:不,你不能在客戶端應用程式中保護你的API金鑰。
這篇文章詳細介紹了一些細節
兩個選擇: