xss的防御

 

 

注意:HttpOnly解决的是XSS后的Cookie劫持攻击。因为JS读取不到Cookie的值。

 

 

一个Cookie的使用过程如下:

Step1:浏览器向服务器发起请求,这时候没有Cookie。

Step2:服务器返回时发送Set-Cookie头,向客户端浏览器写入Cookie。

Step3:在该Cookie到期前,浏览器访问该域下的所有页面,都将发送该Cookie。

HttpOnly是在Set-Cookie时标记的:

Set-Cookie: <name>=<value>[; <Max-Age>=<age>]
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; HttpOnly]

服务器可能会设置多个Cookie(多个key-value对),而HttpOnly可以有选择性地加在任何一个Cookie值上。

例,使用HttpOnly

<?php

header("Set-Cookie: cookie1=test1;");
header("Set-Cookie: cookie2=test2;httponly", false);

?>

<script>
  alert(document.cookie);
</script>

在这段代码中,cookie1没有HttpOnly,cookie2被标记为HttpOnly。两个Cookie均被写入浏览器。

在不同的语言中,给Cookie添加HttpOnly的代码如下

  • Java EE
response.setHeader("Set-Cookie", "cookiename=value;  Path=/;Domain=domainvalue;Max-Ag
e=seconds;HTTPOnly");
  • C#
HttpCo
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值