web安全要点
更新日期:
概述
主要来说有三种类型的web攻击:
- XSS注入
- CSRF攻击
- 界面操作劫持攻击
XSS
XSS,即跨站脚本,发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中出现了不被预期的脚本指令并执行时,XSS就会发生。
XSS概括的讲就是,想尽一切方法将你的脚本内容在目标网站中目标用户的浏览器上解析执行即可。
XSS类型
XSS主要有三种:反射型XSS,存储型XSS,DOM XSS
- 反射型XSS发生的过程是,发出请求时,XSS代码出现在URL中,作为输入提交到服务端,服务端解析后响应,在响应内容中出现这段XSS代码,最后浏览器解析执行。发射型XSS发生的原因是由于服务器没有对输入做过滤,输入什么就是返回输出什么,使得攻击者可以利用这点构造一些恶意的脚本。比如qq的某个漏洞,qq昵称构造成特定时,当用户查看聊天记录显示此特定qq昵称会引发漏洞。
- 存储型XSS是由于服务器不加过滤将输入存入了服务器的数据库文件系统内存等,当用户请求数据时,前端会显示这个恶意的输入。
- DOM XSS,跟反射型和存储型的区别在于不需用经过服务器端的解析,完全利用客户端的dom的输入输出。
CSRF
CSRF,即跨站请求伪造。对于CSRF来说,它的请求有两个关键点:跨站点的请求与请求是伪造的。
主要原因是服务器只识别了浏览器而没有识别发出的请求到底是不是用户发出的,使得攻击者可以假借用户的认证,执行请求。当用户先登录了合法网站后又登录恶意网站,恶意网站可以假借用户登录cookie进行CSRF攻击。请求是身份认证后发出的。
一种解决方式是加token,另一个方式是加验证码。
CSRF攻击过程的三个关键点:跨域发出了一个GET请求、可以无javascript参与、请求是身份认证后的。
CSRF类型
按照攻击方式分类,CSRF可分为:HTML CSRF攻击、JSON HiJacking攻击和Flash CSRF攻击等。
- HTML CSRF攻击 指get请求由dom发出,post请求由form发出
- JSON HiJacking攻击 指目标站点api认证用户不足,使得恶意网站截取到了带有隐私的json数据
- 使用flash发送请求
界面操作劫持
界面操作劫持攻击是一种基于视觉欺骗的Web会话劫持攻击,它通过在网页的可见输入控件上覆盖一个不可见的框,使得用户误以为在操作可见控件,而实际上用户的操作行为被其不可见的框所劫持,执行不可见框中的恶意劫持代码,从而完成在用户不知情的情况下窃取敏感信息、篡改数据等攻击。
利用社工和美工学,将某个页面伪装,诱骗用户去点击,一般是将真正发送请求的按钮透明,底下加伪装的背景。分为点击劫持、拖放劫持、触屏劫持。 技术上一般是透明层+iframe,透明层使用css样式实现,使用iframe来嵌入被劫持的页面。
防御
web攻击防御主要围绕三个方面:
浏览器厂商提供的安全策略,主要是w3c安全规范。跟http安全相关的头部:
- X-Frame-Options
可能的为value:
DENY
、SAMEORIGIN
, 设置能否被设置为frame - X-XSS-Protection
可能的value:
0
、1
、1;mode=block
,X-XSS-Protection只能防御反射型xss - X-Content-Security-Policy
又称CSP策略,chrome的头部为 X-WebKit-CSP
CSP策略的格式:
X-Content-Security-Policy:[指令1] [指令值1] ; [指令2] [指令值2]
- X-Frame-Options
可能的为value:
web厂商能做的
- 严格的子域设计
- 安全传输 ,使用https
- 安全的cookie(HttpOnly)用于身份认证
- 优秀的验证码,用于重要的页面
用户加强web安全意识,比如经常更新系统和浏览器。