【原创】常见的网站攻击方法与防护

【原创】常见的网站攻击方法与防护

攻击分类

1、利用Web服务器的漏洞进行攻击。如CGI缓冲区溢出,目录遍历漏洞利用等攻击;

2、利用网页自身的安全漏洞进行攻击。如SQL注入,跨站脚本攻击【XSS】等。

常见的应用攻击与防护

1、缓冲区溢出 —— 攻击者利用超出缓冲区大小的请求和构造的二进制代码让服务器执行溢出堆栈中的恶意指令。可参照:《缓冲区溢出攻击》

防御:1)通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码;2)强制写正确的代码的方法;3)利用编译器的边界检查来实现缓冲区的保护。这个方法使得缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁,但是相对而言代价比较大;4)一种间接的方法,这个方法在程序指针失效前进行完整性检查。虽然这种方法不能使得所有的缓冲区溢出失效,但它能阻止绝大多数的缓冲区溢出攻击

2、分布式拒绝服务攻击【DDOS】—— 构造大量的非法请求,使Web服务器不能响应正常用户的访问,可参照:《DDOS攻击》

防御:1)采用高性能的网络设备(质量高,关键时刻不会掉链子);2)尽量避免NAT的使用(此技术会较大降低网络通信能力,必须要用的话,那就没办法了);3)充足的网络宽带保证(就好比你的门店,如果门足够大,就可以短时间内承压大量的请求);4)升级主机服务器硬件(比如CPU、内存、硬盘、网卡啥的);5)把网站做成静态页面(大量事实证明,静态页面不仅能够大大提高抗攻击的能力,还能减少黑客的入侵,因为HTML很少溢出);6)最好在需要调用数据库的脚本中拒绝使用代理的访问, 因为经验表明使用代理访问你网站的80%属于恶意行为。

3、跨站脚本攻击【XSS】—— 提交非法脚本,其他用户浏览时盗取用户帐号等信息(利用的是用户对指定网站的信任)。

防御:1)特殊字符过滤或HTML实体转码(常用的特殊字符如:单引号’,双引号“”,尖括号<>,反斜杠\,冒号:,and符&,#号#等),为了保证数据的原始性,最好的过滤方式是在输出和调用的时候进行如HTML实体一类的转码,防止脚本注入; 2)标签事件属性黑白名单(推荐使用白名单,实现规则可以使用正则表达式来匹配,如果不在白名单,就直接拦截掉)

4、跨站请求伪造CSRFXSRF】—— 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法(利用的是网站对用户网页浏览器的信任)。

防御:1)增加token/referer验证,避免img标签请求的攻击;2)增加验证码(一般只用在敏感区域的操作,比如登录页面,实现方式跟token差不多)

5、SQL注入 —— 构造SQL代码让服务器执行,获取敏感数据。

防御:1)关闭线上的错误提示信息(可自定义通过专门的链接显示错误信息,但是要做好保密);2)PDO prepare预编译,现在PHP版本都有PDO方面的扩展,使用的时候,最好通过预编译的方式来处理数据库查询,可以极大的提高安全性;3)过滤函数和类,使用场景有两个,一种是在程序入口统一过滤,很多成熟的框架在这方面做得就比较好,另一种就是在SQL语句运行之前使用,除了过滤单引号等函数之外(如使用addslashes、mysql_real_escape_string等过滤函数进行过滤,intval等字符转换),还有一些开源类过滤union、select等关键字。

6、URL 访问限制失效 —— 黑客可以访问非授权的资源连接强行访问一些登陆网页、历史网页。

防御:1)完善权限验证系统,确保所有的链接和业务功能通过有效的访问控制机制保护,在任何处理之前先检验用户的角色和权限。确认多步骤流程的每个步骤都进行权限验证,而不仅仅是在第一个步骤;2)合理分配文件的存储位置,一些关键的文件不要放到公有的目录里面,防止人为拼接URL进行访问。

7、会话认证漏洞 —— 会话信息没有被保护好,被黑客拿来进行修改模拟,存在安全风险。

防御:1)把Cookie和Session结合起来使用,不能单从Cookie或者Session中获取参数值然后直接使用;2)敏感数据不要放到Cookie中,在设置Session时,也要保证客户端不能操作敏感Session参数;3)毕竟Cookie是存储到客户端的,可以被显性的查看,所以,对一些存储到Cookie中的数据,要做好加密这方面的工作。

8、DNS攻击 —— 黑客利用DNS漏洞进行欺骗DNS服务器,从而达到使DNS解析不正常,IP地址被转向导致网站服务器无法正常打开(常见的攻击手段有:域名劫持、缓存投毒、DDOS攻击、DNS欺骗等),可参照:《DNS攻击原理与防范》

防御:1)足够的宽带;2)靠谱的服务商,就像阿里的云解析,一方面,服务商有自己相应的防护措施,另一方面,遇到问题,联系服务商,响应也会比较及时。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据