一、拒绝服务
这是常见的一种方式,即DOS攻击或DDOS攻击,通过向某个站点服务器反复发送请求,导致无法承载大量的请求而“拒绝服务”。
被攻击的原因
- 服务器带宽不足,不能挡住攻击者的攻击流量
案例:
- SYN Flood ,简单说一下tcp三次握手,客户端先服务器发出请求,请求建立连接,然后服务器返回一个报文,表明请求以被接受,然后客户端也会返回一个报文,最后建立连接。那么如果有这么一种情况,攻击者伪造ip地址,发出报文给服务器请求连接,这个时候服务器接受到了,根据tcp三次握手的规则,服务器也要回应一个报文,可是这个ip是伪造的,报文回应给谁呢,第二次握手出现错误,第三次自然也就不能顺利进行了,这个时候服务器收不到第三次握手时客户端发出的报文,又再重复第二次握手的操作。如果攻击者伪造了大量的ip地址并发出请求,这个时候服务器将维护一个非常大的半连接等待列表,占用了大量的资源,最后服务器瘫痪。
- CC攻击,在应用层http协议上发起攻击,模拟正常用户发送大量请求直到该网站拒绝服务为止。
防御:
阿里巴巴的安全团队在实战中发现,DDoS 防御产品的核心是检测技术和清洗技术。检测技术就是检测网站是否正在遭受 DDoS 攻击,而清洗技术就是清洗掉异常流量。而检测技术的核心在于对业务深刻的理解,才能快速精确判断出是否真的发生了 DDoS 攻击。清洗技术对检测来讲,不同的业务场景下要求的粒度不一样。
- 最直接的方法增加带宽。但是攻击者用各地的电脑进行攻击,他的带宽不会耗费很多钱,但对于服务器来说,带宽非常昂贵。
- 云服务提供商有自己的一套完整DDoS解决方案,并且能提供丰富的带宽资源
二、SQL注入
利用后台漏洞通过URL将关键SQL语句带入程序从而在数据库中进行破坏。
例子:
uname = request.POST['username']
password = request.POST['password']
sql = "SELECT all FROM users WHERE username='" + uname + "' AND password='" + password + "'"
database.execute(sql)
上面这段程序直接将客户端传过来的数据写入到数据库。试想一下,如果用户传入的 password 值是: "password’ OR 1=1",那么 sql 语句便会变成:
sql = "SELECT all FROM users WHERE username='username' AND password='password' OR 1=1"
如上语句就会所有的用户的账号密码给泄漏了;
防御:
- Prepared Statements (with Parameterized Queries): 参数化的查询语句可以强制应用开发者首先定义所有的 sql 代码,之后再将每个参数传递给查询语句
- 敏感数据在数据库里加密后存放,这样即使数据泄漏可能也是安全的
三、网络嗅探程序
查看通过Internet的数据包来抓取口令和内容,通过侦听器程序可以监视网络数据流,从而获得用户登录的账号和密码。
四、钓鱼网站
这种手段需要黑帽会构建钓鱼网站,对目标网站的请求方式比较了解,一般会通过在目标网站内利用留言功能留下网址,可能管理员会通过这个网址进入黑帽构造的网页而触发增加管理用户的请求。
五、木马植入
黑客直接通过向服务器种植木马,开启,取得控制权。
六、恶意小程序
携带在我们常用应用上的微型程序,可以修改硬盘上的文件,以窃取口令等。
参考: