
web安全性包括: 客户端脚本安全和服务器端应用服务器
客户端脚本安全:
 ● 跨站脚本攻击(XSS )
 ● 跨站点请求伪造(CSRF)
 ● 点击劫持(ClickJacking)
 ● HTML 5 安全性
 服务端应用安全:
 ● 注入攻击
 ● 文件上传漏洞
 ● 认证与会话管理
 ● 访问控制
 ● DDos攻击
 个人意识和个人层面:
 Xss 攻击
 Cross Site script: Xss攻击是通过HTML网页篡改网页,插入恶意的脚本,从而在用护浏览网页,控制用户浏览器的一种攻击,Xss长期被列为Web客户端的头号大敌.
 反射型XSS
 反射型Xss只是简单把用户输入的数据“反射”给浏览器,也就是说,黑客往往需要诱使用户点击“恶意”的链接,有称为非持久的xss
 存储型XSS
 存储型Xss,黑客把恶意的脚本保存在服务器
 DOM Based Xss
 也是反射型的XSS,通过修改DOM节点形成XSS,称为DOM Based Xss
Xss攻击进阶
 Xss payload
 Xss 攻击成功之后,对用户当前浏览的页面植入恶意脚本,控制用户的浏览器,称为Xss payload,常见的Xss payload,是Cookie劫持,可以通过设置“Httponly”标识并防止Cookie劫持,
 解决思路
- Cookie httponly
 - 输入检查, 互联网有很多Xss filter
 - 输出检查, 在变量输出到HTML时候,可以使用编码或者转义,比如HtmlEncode JavascriptEncode
 - 富文本尽量不让用户自定义Css,如果支持的话,用Css parser对样式进行智能解析.
 - Dom Based Xss是从javascript输出数据到HTML页面,上面所有的方法是从服务器直接输出到HTML,这块目前还没有效的解决,
 
跨站点请求伪造(CSRF)
浏览器的cookie
● SessionCookie(又名为临时Cookie)
 ● Third-party cookie
 两者的区别是在于 Third-party cookie是服务器在set-cookie时指定了Expire时间,只有到了expire时间后的cookie才会失效,所以这种cookie会保存在本地,而session-cookie则没有指定expire时间,所以浏览器关闭之后,就失效了.一般而言浏览器会禁止
Web安全是一个很大的领域,可参考《白帽子讲Web安全》
1、XSS 跨站脚本攻击
 ○ 类型
 ■ 反射型
 ■ 存储型
 ■ 基于 DOM 的攻击
 ○ 解决方案有:
 ■ 服务端
 ● 输入时,过滤数据、使用编码
 ● 设置 cookie 为 httpOnly
 ■ 前端
 ● 输入时,过滤数据、使用编码
 ● 输出时,过滤数据
2、CSRF 跨站请求伪造
 ○ 原理:利用客户端用户的登录态进行的第三方请求攻击
 ○ 解决方案有:
 ■ referrer
 ■ 验证码
 ■ token
 ■ cookie 新增属性 SameSite
3、iframe 的风险
 ○ 防御:使用 iframe 的属性 sandbox 限制 iframe 的行为
4、点击劫持
 ○ 原理:利用网站视觉欺骗,将原有网页的功能或操作通过其他形式覆盖,当用户点击时,从而发起攻击
 ○ 防御:
 ■ iframe 覆盖攻击:使用 X-Frame-Options HTTP 响应头标记该页面不能被 iframe 嵌入,从而避免该点击劫持的可能性
 ■ 图片覆盖攻击:考虑是否存在xss、检查用户提交的img标签是否style属性浮出
5、错误的内容推断
 ○ 浏览器会根据返回的内容自行推断文件的类型,从而以相应的类型执行文件,如 .js 文件就发起执行 js 脚本。
 ○ 防御:设置 HTTP 头的属性 X-Content-Options: nosniff ,设置后浏览器不再推断类型,而是根据 Content-Type 的值去处理。
6、不安全的第三方依赖包
 ○ 通常项目开发中,不可避免的会使用到第三方依赖包,这时第三方依赖包就有可能存在安全漏洞。
 ○ 防御:
 ■ 使用一些检测工具检查第三方依赖包等
7、响应拦截
 ○ 通常用户访问某个网站,是从域名开始输入,访问某网站时,是通过 http 请求发起的,然后再重定向https请求,这给了攻击者机会,在 http 访问时便被拦截。
 ○ 防御:
 ■ 输入网站时,带上协议:https
 ■ 响应头上带上 Strict-Transport-Security 告诉浏览器以后访问该网址时自动把 http 转换成 https
 ■ 不使用不信任的热点访问需要关注安全的网站
8、本地存储数据泄露
 ○ 防御:尽可能不在前端存储敏感、机密的信息
9、静态资源完整性
 ○ 通常静态资源如 脚本文件 和 样式文件存在 CDN,若 CDN 被劫持修改了资源,那么就会造成被攻击。
 ○ 防御:使用浏览器端的 script 和 link 标签的属性 integrity 表示文件的 base64编码的哈希值和实际的文件哈希值比较是否未被修改。



















