当前位置 : 主页 > 编程语言 > java >

Cookie防劫持的处理

来源:互联网 收集:自由互联 发布时间:2022-10-15
Cookie与session HTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护在服务器, 用于维护相对较大的用户


Cookie与session

HTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护在服务器, 用于维护相对较大的用户信息.

用通俗的语言, Cookie是钥匙, Session是锁芯.

Cookie简单理解就是钥匙, 每次去服务端获取资源, 需要带着这把钥匙, 只有自己的锁芯(资源), 才能打开.。

但是如果钥匙被别人拿了, 那别人就可以冒充你的身份, 去打开你的锁芯, 从而获取你的信息, 甚至挪用你的资金. 这是非常危险的.

XSS攻击:

其就是利用站点开放的文本编辑并发布的功能, 从而造成攻击,就是输入javascript脚本, 窃取并投递cookie信息到自己的站点.

比如攻击者以一个普通用户登录进来,然后在输入框中提交以下数据:

Cookie防劫持的处理_xss攻击

有了该session-id,攻击者在会话有效期内即可获得管理员的权限,并且由于攻击数据已添加入数据库,只要攻击数据未被删除,那么攻击还有可能生效,是持久性的。

Cookie的不安全就是因为这引起的。


Cookie防劫持预防

基于XSS攻击, 窃取Cookie信息, 并冒充他人身份。
1) 方法一:
给Cookie添加HttpOnly属性, 这种属性设置后, 只能在http请求中传递, 在脚本中, document.cookie无法获取到该Cookie值. 对XSS的攻击, 有一定的防御值. 但是对网络拦截, 还是泄露了.
2)方法二:
在cookie中添加校验信息, 这个校验信息和当前用户外置环境有些关系,比如ip,user agent等有关. 这样当cookie被人劫持了, 并冒用, 但是在服务器端校验的时候, 发现校验值发生了变化, 因此要求重新登录, 这样也是种很好的思路, 去规避cookie劫持.
3)方法三:
cookie中session id的定时更换, 让session id按一定频率变换, 同时对用户而言, 该操作是透明的, 这样保证了服务体验的一致性.


上一篇:移动端h5点击input打开数字键盘
下一篇:没有了
网友评论