簡體   English   中英

檢查 JavaScript 中是否存在 httponly cookie

[英]Check if httponly cookie exists in Javascript

正如問題所說,如果 cookie 是 HttpOnly,你能找出 Javascript 中是否存在 cookie 嗎? 我不需要訪問它里面的信息,只要知道它有一個。

關於這種情況的更多信息是,最初有一個 Web 服務器使用 cookie 作為身份驗證令牌,並且由於客戶端不使用它而將其設置為 httponly,因此它增加了安全性。

但是現在需要進行更改,其中客戶端需要知道它是否具有 cookie(因為該站點可以在用戶未登錄的情況下工作,但是如果他們已登錄(auth cookie 將存在),則該站點需要顯示某些事情並隱藏其他人。

Web 服務器上還有其他安全預防措施,因此在客戶端具有不正確的 auth cookie 的情況下沒有任何危害,但該站點使其看起來像他們已登錄,因為它會刪除 cookie 並拒絕用戶.

如果無法設置,您可以通過嘗試使用 javascript 將其設置為一個值來間接檢查它是否存在,那么 HTTP Only Cookie 必須存在(或者用戶正在阻止 cookie)。

function doesHttpOnlyCookieExist(cookiename) {
  var d = new Date();
  d.setTime(d.getTime() + (1000));
  var expires = "expires=" + d.toUTCString();

  document.cookie = cookiename + "=new_value;path=/;" + expires;
  return document.cookie.indexOf(cookiename + '=') == -1;
}

我有同樣的問題。 我通過服務器設置另一個cookie而不是httponly來解決它,每次刷新httponly會話cookie時,使用相同的max-age並且沒有敏感數據。 現在,如果其中一個存在,另一個同樣如此,並且客戶端可以知道 httponly 對應物是否存在。

不。請參閱下面的 Rob 評論。

看到這個,你可能已經看到了 - http://en.wikipedia.org/wiki/HTTP_cookie#Secure_and_HttpOnly

HttpOnly cookie 不能通過非 HTTP 方法訪問,例如通過 JavaScript 調用(例如,引用“document.cookie”)...

編輯:刪除了undefined響應,我寫了一個你可能沒有使用的腳本:)

每當您需要檢查 cookie 是否存在時,您可以向需要身份驗證的服務器發送請求並檢查響應。 如果它類似於401 Unauthorized403 Forbidden ,則該 cookie 可能不存在,您可以提示用戶登錄。

另一方面,如果 cookie 存在,它將由瀏覽器自動發送,從而產生200 OK響應。

暫無
暫無

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

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