常见网络攻击方式

Youky ... 2021-10-11 计算机网络 About 4 min

# 常见网络攻击方式

# SQL 注入

通过在 SQL 查询的内容中构造 SQL 语句,如对于

http://domain.com/?user=1
1

通过 URL 可知这是一个 GET 请求,用到了 user 参数。实际的 SQL 查询可能是:

SELECT * FROM users WHERE user_id = '1'
1

如果把请求连接换为:

http://domain.com/?user=1' order by 1#
1

则执行的 SQL 变成了:

SELECT * FROM users WHERE user_id = '1' order by 1#'
1

由于#后面的内容会作为注释,所以语法上是正确的,此时便完成了一次 SQL 注入。返回的结果会按 user_id 第一字段排行。

若继续更改 order by 后面的数字,再 4 的时候出错了,则说明该表中一共有三个字段,达到了猜测数据库内容的目的。

此外,还可以使用联合查询,直接查出表内的内容,如

http://domain.com/?user=1' union select database(),user()#
1

对应的 SQL 为:

SELECT * FROM users WHERE user_id = '1' union select database(),user()#'
1

将会返回数据库的名字和用户名

# 防范措施

SQL 预编译:

  • 在服务器启动时,就将 SQL 语句的模板发送给 MySQL 服务器,并对模板进行编译,对于数据采用占位符
  • 请求到来时,传送相应的参数,直接进行执行。避免了用户输入的数据成为查询逻辑的一部分

# CSRF

Cross-site request forgery 跨站请求伪造

CSRF 攻击是指:黑客诱导用户点击链接,打开黑客的网站,然后黑客利用用户目前的登录状态发起跨站请求。

在进入黑客的网站 B 后,对已登录的网站 A 发起请求,并会附带上对于网站 A 的cookie,来模拟用户的登录状态。

# 防范措施

SameSite 字段的取值有三种:

  1. Strict:只有在当前域名下的请求才能携带 Cookie
  2. Lax:只能在 get 方法提交表单或 a 标签发送 get 请求时允许携带 Cookie
  3. None:默认值,在任何情况都自动携带 Cookie

# 验证来源站点

根据请求头中的 origin 和 refer 验证请求来源。

但由于这两个字段可以伪造,所以有效性不高

# CSRF Token

后端返回的页面中,附带一个 token 字符串,浏览器再次发送请求时,必须携带这个 token 才有效。

因为第三方站点一般无法获得这个 token,因此会被服务器拒绝。

# XSS

Cross Site Scripting 跨站脚本,为了和 css 区分,叫它 xss

XSS 攻击是指浏览器中执行的恶意脚本,从而拿到用户信息并进行操作

可能造成的影响:

  • 读取 cookie
  • 监听用户行为,如用户输入的账号密码
  • 修改 DOM 伪造登录表单
  • 在页面中生成悬浮广告

XSS 攻击有三种实现方式:存储型、反射型、文档型

# 存储型

将脚本存储到了后端数据库,在页面渲染时直接执行。

常见场景:用户提交了一段 JS 而前后端没有做转义。

# 反射型

将恶意代码作为请求的一部分,如

http://domain.com?name=<script>alert("1")</script>
1

后端获得了 name 参数,然后将内容返回给浏览器,这部分内容就作为 HTML 的一部分解析,也就是进行了执行

# 文档型

不攻击服务端,而是在数据传输过程中进行劫持,直接修改 HTML 文档

# 防范措施

  • 对用户输入内容进行转义
  • 设置CookieHttpOnly属性
  • 浏览器的内容安全策略

# DDoS

分布式拒绝服务攻击

定义:在短时间内向服务器发送大量请求,耗尽服务器的资源,使正常的请求无法得到响应,造成网站瘫痪。

# 防范措施

  1. 拦截特征 IP 的请求。若攻击者的 IP 是有特征的,对其进行拦截即可
  2. 带宽扩容。容纳包括攻击请求的所有请求,则攻击自然无效
  3. 部署 CDN。将静态内容部署到 CDN,用户会访问 CDN 中的缓存,而不是直接向源服务器发送请求

# SYN 泛洪攻击

属于 DDoS 攻击的一种,通过向服务器放大量的 SYN 报文,使服务器打开大量的半连接,分配 TCB(Transmission Control Block 传输控制块),从而消耗资源,致使正常的链接请求无法被响应

# 防范措施

  • 无效连接的监控释放:系统监视半开连接和不活动连接,达到一定阈值后进行释放。正常请求也可能受影响
  • 延缓 TCB 分配(SYN Cookie):改变 TCB 的分配时间,初次收到 SYN 报文后,计算出一个 Cookie 值但不存储。当正式建立连接时才根据这个值校验后进行 TCB 的分配。

# 中间人攻击

Man-in-the-Middle Attack

攻击者和通信双方分别建立独立的联系,通信双方无法意识到两方的通信被人控制。

# 防范措施

使用特殊的身份认证方法(如 HTTPS 中的 SSL)

Last update: October 16, 2022 21:28
Contributors: youky7 , Youky