nodeJS中的Cookie和Session
Cookie
● HTTP是無狀態協議。簡單地說,當你瀏覽了一個頁面,然後轉到同一個網站的另一個頁面,服務器無法認識到,這是同一個瀏覽器在訪問同一個網站。每一次的訪問,都是沒有任何關系的。
那麽世界就亂套了,比如我上一次訪問,登陸了,下一次訪問,又讓我登陸,不存在登陸這事兒了。
● Cookie是一個簡單到爆的想法:當訪問一個頁面的時候,服務器在下行HTTP報文中,命令瀏覽器存儲一個字符串;瀏覽器再訪問同一個域的時候,將把這個字符串攜帶到上行HTTP請求中。
第一次訪問一個服務器,不可能攜帶cookie。 必須是服務器得到這次請求,在下行響應報頭中,攜帶cookie信息,此後每一次瀏覽器往這個服務器發出的請求,都會攜帶這個
特點
● cookie是不加密的,用戶可以自由看到;
● 用戶可以刪除cookie,或者禁用它
● cookie可以被篡改
● cookie可以用於攻擊
● cookie存儲量很小。未來實際上要被localStorage替代,但是後者IE9兼容。
express中的cookie,你肯定能想到。 res負責設置cookie, req負責識別cookie。
Session
會話。 Session不是一個天生就有的技術,而是依賴cookie。
session依賴cookie,當一個瀏覽器禁用cookie的時候,登陸效果消失; 或者用戶清除了cookie,登陸也消失。
session比cookie不一樣在哪裏呢? session下發的是亂碼,並且服務器自己緩存一些東西,下次瀏覽器的請求帶著亂碼上來,此時與緩存進行比較,看看是誰。
所以,一個亂碼,可以對應無限大的數據。
任何語言中,session的使用,是“機理透明”的。他是幫你設置cookie的,但是足夠方便,讓你感覺不到這事兒和cookie有關。
4.3 session
1 var session = require("express-session"); 2 3 app.use(session({ 4 secret: ‘keyboard cat‘, 5 resave: false, 6 saveUninitialized: true 7 })) 8 9 app.get("/",function(req,res){ 10 if(req.session.login == "1"){ 11 res.send("歡迎" + req.session.username); 12 }else{ 13 res.send("沒有成功登陸"); 14 } 15 }); 16 17 app.get("/login",function(req,res){ 18 req.session.login = "1"; //設置這個session 19 req.session.username = "考拉"; 20 res.send("你已經成功登陸"); 21 }); |
加密使用的是MD5加密。
1 C4CA4238A0B923820DCC509A6F75849B
2 C81E728D9D4C2F636F067F89CC14862C
我愛北京天安沒和小橙子:
97AFBA2EE71DE6A78B61149A391A378F
我愛北京天安沒與小橙子:
CCB721C1E26067BBF4BB49DFDBFA0C9E
我愛北京天安門和小橙子:
C3D110D2441EF9323D3F1E6082E708F8
不管你加密多大的東西,哪怕10M文字,都會加密為32位的字符串,就是密碼。並且神奇的,數學上能夠保證,哪怕你更改1個文字,都能大變。所以MD5也能用於比對版本。
MD5是數學上,不能破解的。 不能反向破解。
也就是說,C4CA4238A0B923820DCC509A6F75849B 沒有一個函數,能夠翻譯成為1的。
但是,有的人做數據庫,就是把1~999999所有數字都用MD5加密了,然後進行了列表,所以有破解的可能。
nodeJS中的Cookie和Session