对于现在的互联网,网络攻击每天都在发生,很多攻击是在七层,也就是OSI七层模型中的应用层。因此,Web应用防火墙(Web Application Firewall,简称WAF)愈发显得重要。
https://blog.csdn.net/ying_yingying/article/details/54862285
https://blog.csdn.net/hejin_some/article/details/56844478
SQL注入攻击(SQL Injection),
简称注入攻击,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。
如何预防SQL注入
也许你会说攻击者要知道数据库结构的信息才能实施SQL注入攻击。确实如此,但没人能保证攻击者一定拿不到这些信息,一旦他们拿到了,数据库就存在泄露的危险。如果你在用开放源代码的软件包来访问数据库,比如论坛程序,攻击者就很容易得到相关的代码。如果这些代码设计不良的话,风险就更大了。目前Discuz、phpwind、phpcms等这些流行的开源程序都有被SQL注入攻击的先例。
这些攻击总是发生在安全性不高的代码上。所以,永远不要信任外界输入的数据,特别是来自于用户的数据,包括选择框、表单隐藏域和 cookie。就如上面的第一个例子那样,就算是正常的查询也有可能造成灾难。
SQL注入攻击的危害这么大,那么该如何来防治呢?下面这些建议或许对防治SQL注入有一定的帮助。
1、严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害。
2、检查输入的数据是否具有所期望的数据格式,严格限制变量的类型,例如使用regexp包进行一些匹配处理,或者使用strconv包对字符串转化成其他基本类型的数据进行判断。
3、对进入数据库的特殊字符('"\尖括号&*;等)进行转义处理,或编码转换。Go 的text/template包里面的HTMLEscapeString函数可以对字符串进行转义处理。
4、所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。例如使用database/sql里面的查询函数Prepare和Query,或者Exec(query string, args ...interface{})。
5、在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。
避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。
XSS攻击
XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。
防御:完善的过滤体系
永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。
点击打开链接 http://blog.csdn.net/ghsau/article/details/17027893
CSRF攻击
CSRF 的全称是“跨站请求伪造”,而 XSS 的全称是“跨站脚本”。看起来有点相似,它们都是属于跨站攻击——不攻击服务器端而攻击正常访问网站的用户,但前面说了,它们的攻击类型是不同维度上的分类。CSRF 顾名思义,是伪造请求,冒充用户在站内的正常操作。我们知道,绝大多数网站是通过 cookie 等方式辨识用户身份(包括使用服务器端 Session 的网站,因为 Session ID 也是大多保存在 cookie 里面的),再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。
严格意义上来说,CSRF 不能分类为注入攻击,因为 CSRF 的实现途径远远不止 XSS 注入这一条。通过 XSS 来实现 CSRF 易如反掌,但对于设计不佳的网站,一条正常的链接都能造成 CSRF。
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html?login=1
恶意爬虫
网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定的规则自动抓取万维网资源的程序或者脚本,已被广泛应用于互联网领域。搜索引擎使用网络爬虫抓取Web网页、文档甚至图片、音频、视频等资源,通过相应的索引技术组织这些信息,提供给搜索用户进行查询。随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。不断优化的网络爬虫技术正在有效地应对这种挑战,为高效搜索用户关注的特定领域与主题提供了有力支撑。网络爬虫也为中小站点的推广提供了有效的途径,网站针对搜索引擎爬虫的优化曾风靡一时。
传统网络爬虫从一个或若干个初始网页的URL(Universal Resource Locator统一资源定位符)开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定条件停止抓取。现阶段网络爬虫已发展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法综合应用的智能工具。
网络爬虫的安全性问题
1)搜索目录列表
2)搜索测试页面、手册文档、样本程序及可能存在的缺陷程序
3)搜索管理员登录页面
4)搜索互联网用户的个人资料
点击打开链接http://www.h3c.com.cn/About_H3C/Company_Publication/IP_Lh/2012/02/Home/Catalog/201204/741991_30008_0.htm
点击打开链接http://www.jianshu.com/p/a61f6f78f3b6
扫描器
扫描器是一类自动检测本地或远程主机安全弱点的程序,它能够快速的准确的发现扫描目标存在的漏洞并提供给使用者扫描结果。工作原理是扫描器向目标计算机发送数据包,然后根据对方反馈的信息来判断对方的操作系统类型、开发端口、提供的服务等敏感信息。
扫描是攻击的前奏,通过扫描,搜集目标主机的相关信息,以期寻找主机的漏洞。常见的扫描工具有X-scan、superscan、流光、X-port等。
远程文件包含
远程文件包含攻击Remote File Include,它也属于是“代码注入”的一种,其原理就是注入一段用户能控制的脚本或代码,并让服务端执行。
文件包含漏洞可能出现在JSP、PHP、ASP等语言中,原理都是一样的
点击打开链接 http://yttitan.blog.51cto.com/70821/1574385
DDoS攻击与CC攻击的区别
什么是CC攻击?
1.CC攻击来的IP都是真实的,分散的;
2.CC攻击的数据包都是正常的数据包;
3.CC攻击的请求,全都是有效的请求,无法拒绝的请求;
4.因为cc攻击的是网页,服务器什么都可以连接,ping也没问题,但是网页就是访问不了;
5.但是iis一开服务器一会就死,而且被攻击后就老丢包。不知道是不是cc攻击,syn 攻击频率才78ack攻击频率663.
两者区别:
DDoS是针对IP的攻击,而CC攻击的是网页。
防范措施:
目前网络安全界对于DDoS的防范还是没有什么好办法的,主要靠平时维护和扫描来对抗。简单的通过软件防范的效果非常不明显,在所有的防御措施中硬件安防设施(硬件防火墙)是最有效的,但是硬件防火墙也不是说能杜绝一切攻击,也仅仅能起到降低攻击级别的效果,DDoS攻击只能被减弱,无法被彻底消除。
CC不像DDoS可以用硬件防火墙来过滤攻击,CC攻击本身的请求就是正常的请求,硬件防火墙对他起不到很好的防御效果。如果容易被CC攻击,建议提前安装软防。
一、 Web防护
1.1 网络层防护
1)DDOS攻击
2)Syn Flood
3)Ack Flood
4)Http/HttpS Flood(CC攻击)
5)慢速攻击
1.2 应用层防护和功能
1)URL黑白名单
2)HTTP协议规范(包括特殊字符过滤、请求方式、内容传输方式,例如:multipart/form-data,text/xml,application/x-www-form-urlencoded)
3)注入攻击(form和URL参数,post和get)
l SQL注入防御
l LDAP注入防御
l 命令注入防护(OS命令,webshell等)
l XPath注入
l Xml/Json注入
4)XSS攻击(form和URL参数,post和get,现阶段分为三类攻击:存储式(危害大,也是一种流行方式),反射式、基于Dom的XSS)
5)目录遍历(Path Traversal)
6) form表单数据验证和表单篡改和注入(表单验证银行卡、数据、日期等)
7)认证管理和会话劫持(cookie加密:防护会话劫持,包括cookie超时)。
8)内容过滤(这儿强调上传内容过滤post form和get 参数,主要应用论坛)
9)Web服务器漏洞探测(apache版本等隐藏,站点隐藏)
10)爬虫防护(基于SRC IP,周期判断访问数,爬虫白名单除外)
11)CSRF(Cross-site request forgery)(WAF采用token方式处理能够解决)
12)篡改(包括盗链)(WAF周期爬服务器网页,进行对比验证,如果篡改发现篡改,Client访问WAF网页)
13)Web服务器漏洞扫描(模拟攻击,判断缺陷,自动配置对应规则)
14)cache加速(静态页面优化,PDF,图片等,需要周期映像)
16)错误码过滤(探测服务,及其目录结构)
17)站点转换(URL rewrite)
18)发现攻击锁定(发现攻击,锁定用户)
19)查杀毒
20)加密传输(http -> https转化,即client-waf之间通过https,waf与server之间http)。
21)URL ACL(URL匹配一些规则)。