Web常见的攻击按出现比例排序有:
- 跨站脚本XSS攻击
- SQL注入
- DOS攻击
- 跨站伪造CSRF
- 钓鱼网站
1. DOS攻击
Denial-of-service attack。攻击者发送大量的请求,或者模拟大量合法用户的访问,占用服务器资源直至耗尽,使得真正有需求的用户无法访问。
这种攻击一般由黑客控制的大量“肉鸡”在同一时间发起。对服务器来说,攻击者本身就是访问自己的“普通”用户,自己因无法承载如此多用户的请求而宕机。对于此类攻击防范成本极高。
2. 钓鱼网站
用户通过搜索引擎或者跳转链接进入仿冒(UI、域名和正版网站很相似)的网站,用户在仿冒仿站输入了用户名和密码,导致账户信息泄漏。
3. SQL注入
SQL注入是一种代码注入技术,攻击者可以将恶意SQL语句插入到输入字段中以执行。
比如有这样一个功能:网站前端有一个查询输入框,输入用户输入的姓名查询并展示拥有该姓名的所有用户。当后端接收到查询参数后,做sql语句的拼接,然后执行sql,返回查询结果。
let userName = req.body.userName
let sql = "SELECT * FROM users WHERE name = '" + userName + "';"
exec(sql)
.当用户输入的查询参数是这些字符时:
a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't
最终相当于执行
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) 。由于网站存在漏洞,使得攻击者可以在网站输入恶意代码,并让恶意代码在其他用户浏览器运行,窃取用户信息。
非持久型攻击
- 小花爱逛淘宝,在访问淘宝网时会输入用户名、密码进行登录,登录成功后浏览器和服务器分别保存认证Cookie用于识别小花的身份。
- 攻击者发现淘宝网的商品搜索栏有XSS漏洞:
- 当攻击者在搜索栏搜索商品”手机”时,页面会展示“手机 100条查询结果”,页面的URL会变成 http://taobao.com/search?q=手机。
- 当攻击者搜索“手机” 时,页面会展示“手机 100条查询结果”,同时页面会弹出Alert弹窗。 此时,攻击者就发现了该网站漏洞。
- 攻击者构造链接 “http://taobao.com/search?q=手机” 并把链接通过各自社交平台发布,并配上诱人广告语:“淘宝女神节手机3折,仅限1000名用户”。
- 小花看到广告后,点开链接,发现确实进入淘宝官方网站,并没发现3折的手机,也没把这事放心上。
- 但实际上恶意代码已经在小花浏览器执行,因为小花的淘宝处于已登录状态,恶意代码可以获取小花的Cookie,也能“看”到小花的所有信息,并模拟小花的所有操作。
持久型攻击
- 攻击者发现淘宝的商品详情页的商品评论框有XSS漏洞
- 攻击者发了一条评论,内容是:”宝贝物美价廉,买到就是赚到