web安全相关的攻防套路及其他策略

794 阅读3分钟

1 攻防套路

1.1 XSS

跨站脚本攻击(Cross Site Script)是最常见的攻击之一,攻击者在用户页面注入恶意脚本,当用户浏览该页面时就会自动执行。在使用了react或其他框架的情况下,除非有特别操作(比如使用dangerouslySetInnerHTML),否则会自动将注入的内容转义
转义后的标签会当作字符串来解析,而不是作为脚本执行。

常见的有两种

  • 非持久型 XSS,又称为反射型,比如一个元素是后端接口返回或者通过input输入或者url解析等不安全方式获取。
  • 持久型 XSS,通过表单等方式将相关代码存入数据库,然后前端直接渲染。

可通过以下操作可

  • 页面渲染的的所有元素应由可控服务器获取,比如使用csp
  • 把所有即将插入的dom转义。

1.2 CSRF

跨站请求伪造攻击(Cross-Site Request Forgery)的攻击过程大致为

  • 用户访问并登录网站a,并返回了相关认证信息
  • 用户又访问网站b,b返回一些攻击性代码,比如图片,在用户不知情的情况下浏览器自动携带认证信息访问a
  • a如果没做相关防范就会根据认证信息当作是用户的访问进行处理。

防范措施

  • 验证referrer
  • 添加相关http header
  • 使用cookie外其他方式认证

1.3 SQL 注入

SQL 注入(SQL Injection)是因为没有处理好用户输入

1.4 DDoS 攻击

DDoS 又叫分布式拒绝服务(Distributed Denial of Service),其原理就是利用大量的请求造成资源过载,导致服务不可用。
预防措施可以缓解但不能预防,比如

  • 限制单ip请求次数
  • 关闭和限制对外开放的服务
  • 加配置和负载均衡

1.5 流量劫持

包括dns劫持和http劫持。
其中dns劫持是dns服务器将域名解析到恶意网站,可能是电脑中毒改了dns配置等。
http劫持是中间人通过篡改http响应修改响应页面,使用https。

2 其他策略

2.1 https

在http基础上添加tls层加密,具体看这里

当在https页面请求http时,这个页面被称为mixed content page,这种情况下的页面只能部分加密部分,而且通过http获取的脚本可以更改https页面的行为,和泄露信息,因此浏览器会阻止mixed content的加载。

2.2 cookie的安全设置

cookie在使用时有一些安全选项,具体看这里

2.3 同源策略

参考这里

2.4 CSP

同源策略通过阻止非同源的资源加载来保证安全,对应的是,CSP通过设置哪些内容可以在本页面运行来保证安全。

内容安全策略(Content Security Policy )使服务端添加Content-Security-Policy header来指定不同资源的加载方式,可以有效解决XSS。

比如可以指定srcpt标签的加载来源(origin等)或使用方式(是否可以内联使用或使用eval等)