cookie的HTTPOnly属性,主要是用来防止JavaScript来读取cookie,默认情况下,JavaScript可以通过document.cookie来读取cookie,这样是很不安全的。通过配合XSS攻击,就可以达到盗取用户cookie的目的。这样的话,就可以在不知道用户密码的情况下,直接登陆用户的账号,现在很多网站都是使用coookie来保存用户名和密码信息的,非常不安全。
所以,出于安全考虑,我们最好是为cookie设置一下属性,让JS读取不到cookie,这样就会安全一些。Servlet 3.0一下,cookie的设置不支持HTTPOnly选项。我们可以通过其它的手段,来达到目的。
首先看一下没有为cookie设置HTTPOnly的情况,JS直接读取Cookie
请求一下Servlet,然后发现确实没有HTTPOnly属性
然后测试一下用JS访问Cookie
确实可以直接访问到Cookie信息,这样是非常不安全的,如果网站存在存储型或反射型的XSS漏洞,那么将会非常可怕,既然可以访问到cookie,那么肯定可以通过JS把cookie发送到一个地址,然后这个地址写一个页面接收JS发过来的请求,就拿到了用户的cookie!
下面我们开始为Cookie设置HTTPOnly属性
先清空一下原来的cookie,然后再去请求一下看看
我们看到HTTP一栏上面有一个对勾,然后我们再尝试使用JS访问一下Cookie
JS已经访问不到Cookie了,这样安全问题就解决了!