网络安全

前端攻击

XSS

跨站脚本攻击,由插入页面处理的数据未经处理导致。

  • 存储型 XSS :提交的数据未经处理存储到数据库中,然后从数据库中获取数据插入页面导致的
  • 反射型 XSS :通过 URL 提取参数未经处理直接插入到页面导致
  • MXSS :渲染 DOM 时插入了攻击脚本(模板渲染)

通过字符转义的方式把特殊的符号转化为安全的 HTML 字符(如 <、>等)

SQL 注入攻击

结构性查询语言注入攻击,页面提交的数据直接拼接到 SQL 语句进行操作导致,通过对查询数据进行合法性校验即可避免

CSRF

跨站请求伪造,非源站点按照源站点数据格式提交非法数据给源站点的一种攻击方式。大部分网站是通过 COOKIE 的方式来验证登录的用户信息,由于浏览器的策略导致请求时会自动携带相关 COOKIE,当非源站点请求源站点数据时也会携带相关 COOKIE,此时构造一个非法的请求也会请求成功。解决办法就是通过在页面中预先植入 TOKEN ,在接口请求时再手动携带上相关的值,由于浏览器的安全策略限制非源站点无法读取相关数据进而导致请求失败

网络劫持

网络资源请求在请求过程中因为人为的攻击导致没有加载到预期的资源内容。

DNS 劫持

攻击者通过篡改 DNS 服务器的域名解析记录,导致用户无法访问正确的网络 IP ,而是访问篡改后的错误 IP 地址。

HTTP 劫持

在用户浏览器和访问的目的服务器之间建立的网络数据传输通道中从网关或防火墙层上监视特定的数据信息,当满足特定条件时,就会在正常的数据包中插入或篡改网络数据包(如 ISP 在部分第三方网站页面中植入广告)。可以通过 HTTPS 协议来预防

浏览器 WEB 安全控制

X-XSS-Protection

防止反射型 XSS 问题的发生,浏览器层面增强前端网页的安全性。

1
2
3
4
X-XSS-Protection: 0 # 禁止XSS过滤。
X-XSS-Protection: 1 # 启用XSS过滤(通常浏览器是默认的)。 如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分)。
X-XSS-Protection: 1; mode=block # 启用XSS过滤。 如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载。
X-XSS-Protection: 1; report=<reporting-uri> # 启用XSS过滤。 如果检测到跨站脚本攻击,浏览器将清除页面并使用CSP report-uri (en-US)指令的功能发送违规报告。

Strict-Transport-Security

配置浏览器和服务器之间安全通信的机制,防止中间者攻击(强制使用 HTTPS 协议,普通协议无效)

1
2
3
Strict-Transport-Security: max-age=<expire-time> # 设置在浏览器收到这个请求后的<expire-time>秒的时间内凡是访问这个域名下的请求都使用HTTPS请求。
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains # 如果这个可选的参数被指定,那么说明此规则也适用于该网站的所有子域名。
Strict-Transport-Security: max-age=<expire-time>; preload # 查看 预加载 HSTS 获得详情。不是标准的一部分。

Content-Security-Policy

开发者定义的安全策略性声明,浏览器只可以加载指定可信域名来源的内容(包括脚本、图片、iframefontstyle 等)

Access-Control-Allow-Origin

决定哪些网站可以访问当前服务器资源,通过定义通配符可以让所有网站来访问当前网站的所有资源。若 Access-Control-Allow-Origin*,则 Access-Control-Allow-Credentials 无效。若想 Access-Control-Allow-Credentials 有效(即请求携带 Cookie),则必须明确配置来源。

参考文档