js禁止獲取cookie(瀏覽器禁用js後果)

本文目錄一覽:

如何用js實現跨域獲取cookie

正常情況下,瀏覽器禁止跨域獲取cookie

一般通過sso服務可以實現取得跨域cookie,思路如下:

域A頁面訪問位於域A的服務器,對權限進行驗證

域A服務器於域B服務器通信,記錄一個唯一的加密串用作身份驗證域(並將cookie信息發送給域B服務器)

域A服務器返回302跳轉,跳轉到域B下,並將加密串作為url的一部分

頁面由域A跳轉到域B,域B服務器通過加密串獲取到事先從域A服務器上得到的cookie信息,並在響應頭中添加set-cookie字段設置cookie

如何防止js獲取cookies值

瀏覽器是你自己的,你可以禁用很多功能 比例cookies 腳本 ActionX ····

關掉cookies 操作如下

瀏覽器安全設置 工具—— internet選項 隱私 ——安全級別 調高

如何檢測服務器端的cookie是否被禁用

在服務器端判斷,需要訪問服務器2次

首先在a頁面設置一個Cookie

接着在b頁面請求這個Cookie,如果沒請求到,說明客戶端禁用Cookie了

禁用js也一樣,在a頁面用js設置一個值,提交到b頁面,b頁面獲取到了這個值,說明js啟用

否則js禁用了

nodejs怎麼設置cookie

var http = require(‘http’);

http.createServer(function (req, res) {

// 獲得客戶端的Cookie

var Cookies = {};

req.headers.cookie req.headers.cookie.split(‘;’).forEach(function( Cookie ) {

var parts = Cookie.split(‘=’);

Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || ” ).trim();

});

console.log(Cookies)

// 向客戶端設置一個Cookie

res.writeHead(200, {

‘Set-Cookie’: ‘myCookie=test’,

‘Content-Type’: ‘text/plain’

});

res.end(‘Hello World\n’);

}).listen(8000);

console.log(‘Server running at ‘);

如果去掉其中幾句,就是官方給出的例子,除了表明返回一個頁面多簡單外,一點用也沒有。

var http = require(‘http’);

http.createServer(function (req, res) {

res.writeHead(200, {‘Content-Type’: ‘text/plain’});

res.end(‘Hello World\n’);

}).listen(8000);

console.log(‘Server running at ‘);

我們通過http.createServer的回調來處理所有請求與響應,因此什麼有用的東西都在它們上面。Cookie位於req對象的headers對象上,為一個字符串,通常為了方便我們將它們轉換成一個對象。

寫入一個Cookie其實就是在首部設置一個鍵值對,上面是簡單方式,它實際上可以這樣:

res.writeHead(200, {

‘Set-Cookie’: [“aaa=bbb”,”ccc=ddd”,”eee=fff”],

‘Content-Type’: ‘text/plain’

});

但真正使用時,我們的Cookie並非這樣簡單的的格式:

Set-Cookie: =[; =]

[; expires=][; domain=]

[; path=][; secure][; HttpOnly]

console.log(‘Server running at ‘);

HttpOnly 屬性: 這是微軟對Cookie做的擴展。如果在Cookie中設置了”HttpOnly”屬性,那麼通過程序(JS腳本、Applet等)將無法讀取到Cookie信息,這樣能有效的防止XSS攻擊。

var http = require(‘http’);

http.createServer(function (req, res) {

// 獲得客戶端的Cookie

var Cookies = {};

req.headers.cookie req.headers.cookie.split(‘;’).forEach(function( Cookie ) {

var parts = Cookie.split(‘=’);

Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || ” ).trim();

});

console.log(Cookies)

// 向客戶端設置一個Cookie

res.writeHead(200, {

‘Set-Cookie’: ‘SSID=Ap4GTEq; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly ‘,

‘Content-Type’: ‘text/html’

});

res.end(‘Hello World\nscriptconsole.log(document.Cookie)/script’);

}).listen(8000);

console.log(‘Server running at ‘);

然後多刷幾次頁面,我們發現我們還能在控制台看到SSID=Ap4GTEq這個屬性,但在前端我們看不到它(當然在firebug中能看到)。

Secure屬性: 當設置為true時,表示創建的 Cookie 會被以安全的形式向服務器傳輸,也就是只能在 HTTPS 連接中被瀏覽器傳遞到服務器端進行會話驗證,如果是 HTTP 連接則不會傳遞該信息,所以不會被竊取到Cookie 的具體內容。同上,在客戶端我們也無法在document.Cookie找到被設置了Secure=true的Cookie鍵值對。Secure屬性是防止信息在傳遞的過程中被監聽捕獲後信息泄漏,HttpOnly屬性的目的是防止程序獲取Cookie後進行攻擊。我們可以把Secure=true看成比HttpOnly更嚴格的訪問控制。

path屬性: 指定可訪問Cookie的目錄。例如:”userId=320; path=/shop”;就表示當前Cookie僅能在shop目錄下使用。

domain屬性: 指定可訪問Cookie的主機名.主機名是指同一個域下的不同主機,例如:和gmail.google.com就是兩個不同的主機名。默認情況下,一個主機中創建的Cookie在另一個主機下是不能被訪問的, 但可以通過domain參數來實現對其的控制,其語法格式為:”name=value; domain=CookieDomain”;以google為例,要實現跨主機訪問,可以寫為: “name=value;domain=.google.com”;這樣,所有google.com下的主機都可以訪問該Cookie。

Expires屬性:指定過期時間,格式為”name=value;; expires=GMT_String”; 其中GMT_String是以GMT格式表示的時間字符串,超過這個時間,Cookie將消失,不可訪問。例如:如果要將Cookie設置為10天後過期,可以這樣實現:

js cookie跨站問題

跨站設置cookie和獲取cookie這個在安全上是禁止的,不允許的。正常情況不會讓你人工獲取到的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/246994.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:18
下一篇 2024-12-12 13:18

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 如何解決web瀏覽器雙擊事件時差

    本文將從以下幾個方面對web瀏覽器雙擊事件時差進行詳細闡述,並提供解決方法。 一、雙擊事件延時設置 1、問題描述:在web瀏覽器中,雙擊事件默認會延時一定的時間才能觸發該事件,這個…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • Python載入Cookie錯誤解決方法用法介紹

    本文將從多個方面詳細闡述Python載入Cookie錯誤的解決方法,希望能對讀者有所幫助。 一、Cookie錯誤常見原因 1、Cookie過期:當Cookie過期時,載入Cooki…

    編程 2025-04-29
  • Cookie是後端生成的嗎?

    是的,Cookie通常是由後端生成並發送給客戶端的。下面從多個方面詳細闡述這個問題。 一、什麼是Cookie? 我們先來簡單地了解一下什麼是Cookie。Cookie是一種保存在客…

    編程 2025-04-28
  • 使用Python模擬手機瀏覽器的方法

    解答如何使用Python模擬手機瀏覽器,並且給出示例代碼。 一、安裝Selenium庫 使用Python模擬手機瀏覽器需要使用Selenium庫。 首先,使用pip命令進行安裝: …

    編程 2025-04-28
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • 谷歌瀏覽器窗口大小調整

    谷歌瀏覽器是當今最流行的網絡瀏覽器之一,它的窗口大小調整是用戶操作其中的一個重要部分。本文將從多個方面對谷歌瀏覽器窗口大小調整做詳細的闡述。 一、窗口大小調整的基礎操作 谷歌瀏覽器…

    編程 2025-04-28
  • 如何在電腦上下載安裝谷歌瀏覽器?

    想要在電腦上使用谷歌瀏覽器,我們需要先進行下載和安裝。下面,本文將從多個方面詳細闡述如何在電腦上下載安裝谷歌瀏覽器。 一、到谷歌瀏覽器官方網站下載 谷歌瀏覽器官方網站是我們下載谷歌…

    編程 2025-04-28

發表回復

登錄後才能評論