1 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
當(dāng)出現(xiàn)這樣的問題時(shí),通常最好只是查看源代碼并了解如何使用秘密。這是使用開源代碼的優(yōu)點(diǎn)之一。
這允許會話代碼檢測 cookie 值是否已被篡改,或者它是否仍然是服務(wù)器上最初設(shè)置的真實(shí)值,并且使它們更難在暴力會話攻擊中“猜測”。
這是防止黑客編造自己的 cookie 值或修改 cookie 值的一種方法,因?yàn)橹挥惺褂眠m當(dāng)密鑰簽名的值才會被測試為有效。
簽名過程還有一個(gè)附帶的好處,即它使值變得更長并且看起來有些隨機(jī),因此它掩蓋了潛在的值,使其更難以猜測。經(jīng)典的例子是,如果底層會話 ID 只是一個(gè)單調(diào)遞增的數(shù)字,那么很容易猜測未來或之前的會話值。但是,一旦被簽名,它就不再看起來像一個(gè)簡單的單調(diào)遞增數(shù)字,并且不容易猜測過去或未來的簽名會話值。盡管express-session使用24字節(jié)uid作為其會話id,但在對其進(jìn)行簽名時(shí),該值會延伸到非常非常長,這使得猜測和找到有效會話變得更加困難(我查看的簽名cookie值是80字節(jié)長(經(jīng)過一些編碼)。
添加回答
舉報(bào)