如何让java支持httponly

如何让java支持httponly,第1张

目前sun公司还没有公布相关的API,但PHP、C#均有实现。搞javaEE的兄弟们比较郁闷了,别急下文有变通实现

HttpOnly的设置样例

javaEE

1 response.setHeader("Set-Cookie", "cookiename=value

2 Path=/Domain=domainvalueMax-Age=secondsHTTPOnly")

具体参数的含义再次不做阐述,设置完毕后通过js脚本是读不到该cookie的,但使用如下方式可以读取

1 Cookie cookies[]=request.getCookies()

C#

1 HttpCookie myCookie = new HttpCookie("myCookie")

2 myCookie.HttpOnly = true

3 Response.AppendCookie(myCookie)

VB.NET

1 Dim myCookie As HttpCookie = new HttpCookie("myCookie")

2 myCookie.HttpOnly = True

3 Response.AppendCookie(myCookie)

但是在.NET 1.1 ,中您需要手动添加

1 Response.Cookies[cookie].Path += "HTTPOnly"

PHP4

1 header("Set-Cookie: hidden=valuehttpOnly")

PHP5

1 setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE)

最后一个参数为HttpOnly属性

Response.Cookies[cookie].Path += "HTTPOnly"

Response.Cookies("firstname").Secure ="true"

试一下

方法/步骤

1首先找负责服务器配置的同事帮忙看了下,『启用cookie』 选项是开着的,而且服务器端能看到cookie信息,但是客户端就是访问不到(同样的客户端IE在tomcat容器的情况下是可以正常访问的,说明是was的问题)

2经过负责服务器配置的同事百般寻找,问题终于找到了,是由于was默认开启HttpOnly 的模式,这种模式下 在浏览器的 document对象中就看不到Cookie了,而浏览器在浏览的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax)。

3有两种模式:Secure和HttpOnly。

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

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11450598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存