web session token 和 防跨域攻击

主要是想推荐一下这篇:

实现一个靠谱的Web认证

下文是看过后自己的理解。顺便说下这个人的其他文章也很赞。

session 和 token

session id 比较常见,就不多说了,这里先科普下无状态的token验证:

干掉状态:从session到token
token
图是从上面的链接中偷的。

总结下,就是:

login_handler(){
	signature = hash(user_info, private_secret)
	token = (user_info: signature)
	send_to_client( token )
}

request_handler(){
    token=receive_from_client() 
	signature = hash(user_info, private_secret)
	if (token.signature != signature){
	    send_to_client("wrong signature")
	    return
	}
	// todo process request
}

XSS 和 CSRF

基本概念:

  • XSS(Crossing Site Script)
    例子:坏蛋在某网站的可编辑部分注入脚本,脚本发送信息到坏蛋的服务器后台,坏蛋收集到网站的用户信息/cookie。
    根源:网站没有对用户输入的信息做过滤。

  • CSRF(Crossing Site Recource Forge )
    例子:坏蛋在他们自己网站上加入对某网站API的调用,由于浏览器会自动填充cookie信息,所以如果网站后端只是用cookie认证,则API 会在用户不知情的情况下被执行。比如用户在不知情的情况下,向坏蛋转账了100块。
    根源:网站服务器没有拒绝跨域请求。传统的post表单总是可以跨域(application/x-www-form-urlencoded)?

cookie 的三个属性:

  • Secure;
    只有https 请求,cookie才会被携带。避免http的问题。

  • HttpOnly;
    用js 读不到?只是会在发送时自动携带。避免针对cookie的XSS

  • Same-Site=strict;
    只有在相同网站中才会填充cookie。避免CSRF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值