1. SQL注入
原理
通过把SQL命令插入到Web表单递交或输入URL请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
防范
1)过滤一切输入数据;
2)对于拼接的SQL语句(或避免之),进行再次安全检查
3)应用的异常信息尽量避免显示在客户端(或换为其它友好信息)
4)严格限制连接数据库用户的相应权限,帐号的安全管理等
2. XSS攻击
又叫CSS(Cross-Site Scripting)跨站脚本。
原理
恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,其代码会被执行,从而达到恶意攻击用户的特殊目的。可以分两类:
1)来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。
2)来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。
XSS属于被动式的攻击,而且利用站点内的信任用户,所以还不好利用。
防范
编码输出的数据。如果过滤HTML代码(PHP可以有htmlspecialchars函数)。
3. CSRF(Cross-site request forgery) 跨站请求伪装
原理
通过伪装来自受信任用户的请求来利用受信任的网站的一种攻击手段。例如:一个网站用户A可能正在浏览聊天论坛,而同时另一个用户B也在此论坛中,并且发布了一个具有用户A的银行链接的图片消息。用户B编写了一个在A的银行站点上进行取款的form提交的链接,并将此链接作为图片tag。如果用户A的银行在cookie中保存他的授权信息,并且此cookie没有过期,那么当用户A的浏览器尝试装载图片时将提交这个取款form和他的cookie,这样在没经用户A同意的情况下便授权了这次事务(用户B笑了)。
防范
1)将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在form中包含秘密信息、用户指定的代号作为cookie之外的验证)。
2)对于Ajax请求,“双提交”cookie。 如果某个授权的cookie在post之前正被JavaScript代码读取,那么限制跨域规则将被应用。 如果服务器需要在post请求体或者URL中包含授权cookie的请求,那 么这个请求必须来自于受信任的域(其它域是不能从信任域读取cookie的)。
3)CSRF虽然是web应用的基本问题(不是用户的问题),但用户通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie亦可预防。
4. CC攻击
CC=Challenge Collapsar,表示要向黑洞发起挑战
原理
基于应用层的弱点进行攻击,发送大量的请求数据来导致服务器拒绝服务,是一种连接攻击,也可以归为DDoS攻击的一种。简单举例,对于某一个翻页页面,如多并发高频次的进行大量翻页请求,因查询无法立即完成,资源无法立即释放,会导致数据库请求连接过多,导致数据库阻塞,网站将无法正常打开。也正因为应用层的弱点,取决于各自应用平台的开发能力,因此难以具有通用性的防护方案,这也是CC攻击没有很好的防护产品,非常容易得手的原因。
防范
1)优化代码。如尽量使用缓存,减少数据查询的开销;减少复杂框架的调用;及时释放资源等。
2)限制手段。如禁止一些客户端类型的请求(一些不良蜘蛛),执行间隔时间,权限等。
3)完善日志。记录和分析访问日志,处理好单一ip密集访问,特定url同比请求激增等情况。
虽然想阻止CC攻击很不可能;但多思考,多设想潜在的危险,还是可以做很多有效的防护的。