Web常见的攻击按出现比例排序有:

  • 跨站脚本XSS攻击
  • SQL注入
  • DOS攻击
  • 跨站伪造CSRF
  • 钓鱼网站

1. DOS攻击

Denial-of-service attack。攻击者发送大量的请求,或者模拟大量合法用户的访问,占用服务器资源直至耗尽,使得真正有需求的用户无法访问。
这种攻击一般由黑客控制的大量“肉鸡”在同一时间发起。对服务器来说,攻击者本身就是访问自己的“普通”用户,自己因无法承载如此多用户的请求而宕机。对于此类攻击防范成本极高。

2. 钓鱼网站

用户通过搜索引擎或者跳转链接进入仿冒(UI、域名和正版网站很相似)的网站,用户在仿冒仿站输入了用户名和密码,导致账户信息泄漏。

3. SQL注入

SQL注入是一种代码注入技术,攻击者可以将恶意SQL语句插入到输入字段中以执行。
比如有这样一个功能:网站前端有一个查询输入框,输入用户输入的姓名查询并展示拥有该姓名的所有用户。当后端接收到查询参数后,做sql语句的拼接,然后执行sql,返回查询结果。

  1. let userName = req.body.userName
  2. let sql = "SELECT * FROM users WHERE name = '" + userName + "';"
  3. exec(sql)

.当用户输入的查询参数是这些字符时:

  1. a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't

最终相当于执行

  1. let sql = "SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';"

一次查询就能删库。当然也能做其他任何数据库操作。

应对措施

  • 方法1:使用ORM库,调用API,而不是直接运行SQL语句
  • 方法2:在运行SQL语句前对拼接的查询字段进行转义
  • 方法3:对数据库操作权限也做适当配置,比如不允许删库,能减小损失

4. XSS攻击

Cross-site scripting (XSS) 。由于网站存在漏洞,使得攻击者可以在网站输入恶意代码,并让恶意代码在其他用户浏览器运行,窃取用户信息。

非持久型攻击

  1. 小花爱逛淘宝,在访问淘宝网时会输入用户名、密码进行登录,登录成功后浏览器和服务器分别保存认证Cookie用于识别小花的身份。
  2. 攻击者发现淘宝网的商品搜索栏有XSS漏洞:
    1. 当攻击者在搜索栏搜索商品”手机”时,页面会展示“手机 100条查询结果”,页面的URL会变成 http://taobao.com/search?q=手机。
    2. 当攻击者搜索“手机” 时,页面会展示“手机 100条查询结果”,同时页面会弹出Alert弹窗。 此时,攻击者就发现了该网站漏洞。
  3. 攻击者构造链接 “http://taobao.com/search?q=手机” 并把链接通过各自社交平台发布,并配上诱人广告语:“淘宝女神节手机3折,仅限1000名用户”。
  4. 小花看到广告后,点开链接,发现确实进入淘宝官方网站,并没发现3折的手机,也没把这事放心上。
  5. 但实际上恶意代码已经在小花浏览器执行,因为小花的淘宝处于已登录状态,恶意代码可以获取小花的Cookie,也能“看”到小花的所有信息,并模拟小花的所有操作。

持久型攻击

  1. 攻击者发现淘宝的商品详情页的商品评论框有XSS漏洞
  2. 攻击者发了一条评论,内容是:”宝贝物美价廉,买到就是赚到