xss (跨站脚本攻击)
指攻击者在页面上注入恶意代码,通过恶意脚本对网页进行串改,在用户浏览网页时,对用户浏览器进行控制而获取用户隐私数据的一种攻击方式
场景:
- 输入框中注入恶意脚本,发送给服务器,获取隐私数据(cookie,seesion等)
攻击类型
-
反射型(非持久型)
把用户输入的数据‘反射’给浏览器,该攻击方式通常诱使用户 点击一个恶意链接,或者提交一个表单,在用户点击链接或址提交表单时注入恶意脚本
-
存储型(持久型)
把用户输入的带有恶意脚本的数据存储在服务器端,当浏览器请求数据时,服务器返回脚本并执行
常见的场景是攻击者在社区或论坛上写下一篇包含恶意 JavaScript 代码的文章或评论,文章或评论发表后,所有访问该文章或评论的用户,都会在他们的浏览器中执行这段恶意的 JavaScript 代码
-
基于dom
指通过恶意脚本修改页面的dom结构
xss防范
-
现代主流浏览器中内置csp(内容安全策略)
csp用于检测和减轻用于web站点的特定类型的攻击,例如xss和数据注入等
本质是建立白名单,规定浏览器只能执行特定来源的代码
通过Content-Security-Policyhttp 头来开启
-
HttpOnly阻止cookie劫持攻击
服务器端设置给cookie设置HttpOnly标志
含有httpOnly标志的cookie在http响应头Set-Cookie
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
标记secure的cookie只能通过https协议发送给服务端
-
输入检查
输入的内容进行转义,过滤,编码(encodeURLComponent())
-
输出检查
同上
CSRF(跨站请求伪造)
以用户的身份(cookie),向服务器发送恶意伪照的请求的攻击方式( 利用用户的登录状态发送恶意请求 )
在url中加入恶意的参数,来达到攻击的目的
防范
-
验证码
csrf往往是在用户不知情的状态下发起请求,提示验证码保护用户
-
服务端 Referer Check 验证
在http头中一个字段referer check,记录该http请求的来源地址,通过referer check, 可以检查是否合法的源
请求头中添加token验证
总结
xss 利用用户对服务器的信任
csrf 利用服务器对用户的信任