簡體   English   中英

將CSRF令牌發送到javascript

[英]Send CSRF token to javascript

假設我在會話的服務器端維護一個反CSRF令牌

如果我的表單生成將是動態的,我應該如何將令牌傳遞給客戶端應用程序(即,表單將由javascript執行某些操作后創建)

有沒有一種方法可以將令牌傳遞給javascript,以便我可以將令牌注入表單中。

我發現的一種有效的方法是將包含令牌的cookie發送到瀏覽器,然后將其用javascript提取。

有什么建議么?

我建議從安全令牌開始,然后根據動態表單創建通過JavaScript對其進行改進。

例如,例如:

<input type="hidden" name="csrftoken" value="hgdillksdbgjksdbkvbskb">

頁面加載時在服務器端生成“ value”參數的位置。

然后,您將獲得一個腳本,例如:

csrftoken = document.mainform.csrftoken.value;
# Do something with the CSRF token, like add dynamic values, like sha256(csrftoken + "dynamicvalue");
document.mainform.csrftoken.value = csrftoken;

這樣做的主要思想是防止即使他們設法獲得允許廣告商讀取JavaScript代碼的漏洞利用,也仍然不能組成有效的CSRF令牌,因為它們無法讀取原始的“ csrftoken”值頁面加載時位於表單內部。 這也可以用來“鏈接” AJAX請求,就像您在頁面加載期間以令牌X開頭一樣。 然后,使用JavaScript將其轉換為Y,並在AJAX請求中發送。 在下一個AJAX請求中,您可以將Y用作算法的基礎,以創建Z並將其發送到服務器。 攻擊者無法獲得X的訪問權,因此即使他們以某種方式能夠利用運行中的JavaScript代碼來揭示自身,他們也無法訪問Y或Z。

請注意,由於“同源起點”政策,對手無法讀取頁面內容。 但是Javascript可能包含一些漏洞,這些漏洞將使讀取實際運行的JavaScript代碼成為可能。 目前尚無此類漏洞利用,但總比后悔安全。

當然。 如果要在客戶端動態生成表單,則可以通過某種模板來完成。 令牌應該是該創建函數的參數。

在請求/呈現時將令牌傳遞給客戶端,然后在表單生成時將其作為隱藏元素注入表單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM