XSS与HTTP-only Cookie 脚本获取JSESSIONID的方法

  • A+
所属分类:编程茶楼

XSS与HTTP-only Cookie介绍:

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。跨站点脚本攻击是一种服务器端的安全漏洞,常见于当把用户的输入作为HTML提交时,服务器端没有进行适当的过滤所致。跨站点脚本攻击可能引起泄漏Web 站点用户的敏感信息。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。

为了降低跨站点脚本攻击的风险,微软公司的Internet Explorer 6 SP1引入了一项新的特性HTTP-only。 这个特性是为Cookie提供了一个新属性,用以阻止客户端脚本访问Cookie。

像这样具有该属性的cookie被称为HTTP-only Cookie。包含在HTTP-only Cookie中的任何信息暴露给黑客或者恶意网站的几率将会大大降低。

Secure和HttpOnly:

Secure属性:

当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。

HttpOnly属性:

如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。

在Java的Web容器中设置该属性:

在Java的web应用里,我们要保护的有JSESSIONID这个cookie,因为类似于tomact的容器就是用这个cookie来辨别你的服务器端会话的。所以这个cookie是不应该由客户端脚本来操作的,它很适合用HttpOnly来标识它。

在tomcat6之前只能按照如下方法设置HttpOnly:

String sessionid = request.getSession().getId();
response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; HttpOnly");

对于tomcat6支持对JSESSIONID的cookie设置HttpOnly, 具体的设置是在context.xml配置文件中进行设置的,为Context标签添加如下属性即可开启或禁止HttpOnly:

<Context useHttpOnly="false">

详细的官方配置文档可以参考这里:

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: