课程表

网络安全课程

工具箱
速查手册

Web安全性综述

当前位置:免费教程 » 其他 » 网络安全
注意:本页面内容为W3xue原创,未经授权禁止转载,违者必究!
来源:W3xue  发布时间:2017/11/5 16:36:29

在互联网高速发展的今天,各种应用对安全性都有很高的要求,特别是电子商务、网上银行等领域,更是对安全性要求极高。但互联网的开放性,注定了网络是一个充满木马病毒、钓鱼诈骗、攻击破坏的高发地。当今时代,各个互联网公司都对网络安全更加重视,投入的费用也是越来越高,而各个厂商推出的防火墙产品、软件防护产品也是类别极多,但仍然不可避免的遭受各种攻击,例如CSDN的密码泄露事件、国外雅虎的账号泄露事件等,这些事件都让被攻击的公司丧失了很多资料,让其名誉遭受了损失,让用户丧失了信心。当今的几乎每个网站,都有被攻击的历史,区别是,这些攻击有没有成功渗透进服务器。


一、Web安全的重要性

既然各个公司的安全费用年年见涨,为什么黑客攻击却总是屡屡得手?大体有如下几个原因:

  • 防御者(Web服务提供商)必须防御所有漏洞,而黑客只需要找到最薄弱的环节,且一旦得逞,很有可能导致防御者满盘皆输。有的漏洞防御者很难发现,例如系统软件的漏洞。而有时,用来确保安全采取的措施,反而成了黑客的突破点,例如,一款存有漏洞的防火墙设备。
  • 防御者在明处,黑客在暗处。防御者的IP地址、服务器信息等很大程度上都是公开的,而黑客的信息防御者几乎不可能知晓,在攻击发动前,黑客更是有100%主动权。这个特性决定了DDoS(洪水攻击)的屡试不爽。就在笔者更新这篇教程的时候,网站的ISP服务商受到了DDoS攻击,本站速度受到了影响,反应速度明显变慢。而这些黑客往往通过伪造IP、代理、分散式僵尸遥控,使人很难查到其源头,且查找成本较高,在危害不达到严重的情况下,很少有受害者会去追查到底。而执法机关的技术力量薄弱也让这些黑客更加肆无忌惮,黑客的成本绝大多数就在于时间成本和带宽成本,被抓的寥寥无几。
  • 防御者成本高,黑客成本低。要想成功防御一个网站,防御者必须花大力气、利用有限的工具寻找漏洞并填补,而黑客则可以在任何时候攻击,尝试任何甚至是非法的工具,且对每个网站攻击方式几乎都是大同小异的,大大降低了他们的技能成本。
  • 黑客往往更加专业。现有的小型网站配备专门的安全人员非常少,大都是程序员、工程师兼任,很多程序员、工程师的做法是,在程序完成后再追加专门的安全措施。而黑客往往都是专攻渗透攻击。
  • 一些社会工程学问题也偏向于对黑客有利。比如加了防火墙,影响了网站的商业功能,领导要求下掉或者简化降级这些措施,又比如某位网站系统使用者使用了简短、容易被猜出的密码,或者将密码作为明文在网络上传输,或者被某一通电话某一条微信信息欺骗了修改了密码等等。

看到上面最后一点了吧,从安全角度说,不但黑客会给系统带来损害,防御者的猪队友也会无意中成为黑客的帮凶。因此,安全人员不但要注意编码、技术上的问题,还要注意这些非技术上的问题。


二、常见针对Web的攻击渗透方式

那么,黑客主要通过哪些方式来进行攻击呢?我们来大致了解下:

首先,拒绝服务攻击。DDoS攻击是一种很常见、危害大的攻击方式,俗称洪水攻击,学名:分布式拒绝服务(DDoS:Distributed Denial of Service),它是普通的拒绝服务攻击(DoS)的升级版。其基本原理就是,利用向服务器发送大量的请求或数据包,导致服务器瘫痪。普通的拒绝服务攻击通常只通过一台电脑发起,但是DDoS则是由黑客挟持或控制的大量电脑(俗称“肉鸡”)同时向服务器发起攻击。目前市面上有很多针对DDoS攻击的防护设备。但这只是一个量级的问题,一旦攻击量超过一个值,这些防护设备也是吃不消的。DDoS攻击非常有效,没有一劳永逸的解决办法,就连一些世界级的大网站也会倒在DDoS攻击下。好消息是,普通的DoS攻击比较容易防范,而DDoS攻击的威力虽然可以随着“肉鸡”的数量增大而增大,但其成本一样在提高,需要攻击发起者较长时间、较高的技术手段或很多的金钱来准备“肉鸡”。坏消息是,这中间存在着一条非法的利益链条,往往有资金驱动。

第二,病毒木马攻击。一些有编程经验的黑客会开发一些病毒木马,通过邮件、下载、捆绑软件等方式,感染跟网站相关的电脑(如管理员或编辑的电脑、服务器等)。一些蠕虫病毒危害巨大,例如2007年肆虐网络的“熊猫烧香”病毒。又比如2017年横扫全球的“WannaCry”想哭勒索病毒。还有一些蠕虫病毒连文件都没有,只存在于计算机内存中,十分隐蔽。而一些不那么有名的病毒木马,比如盗号木马可能会让网络游戏玩家装备被盗,让人欲哭无泪,又或者让人们的QQ被盗,QQ相关联的邮箱、微云中的重要资料全部被盗,后果很严重。

第三,程序漏洞攻击。利用代码编写者的考虑不周,对某个站点发动攻击。例如通过sql注入的方式,对某个动态页面进行攻击,甚至导致暴库。通过注入式脚本攻击、跨站脚本攻击等方式,获取用户隐私资料等。

第四,系统/软件漏洞攻击。利用已经公布但没有打上补丁的系统或软件漏洞,或者目前还没有被发现的漏洞,对服务器系统或软件进行攻击。在这种情况下,本来是要预防黑客的软硬件,反而成了黑客的切入点。

第五,社会工程学攻击。利用各种诱骗、无道德的手段,获取网站后台系统的账号和密码。这种攻击往往不是单纯从技术上可以防范的,它需要系统使用者通力合作,遵循安全规定。

这些攻击方式并没有明确的界限,有的被黑客交织使用。


三、常见的薄弱点

在黑客发动攻击的过程中,黑客一定会从其发现的最薄弱的点开始其攻击,因为这样最容易得手。而在各种生产环境(包括代码、运维、使用各个环节)中,总有一些容易被忽视或轻视的常见薄弱环节:

  • 弱口令和薄弱的身份验证。网站的非技术人员后台使用者(采编人员)往往麻痹大意,使用诸如生日、人名、电话号码、简短的密码等作为密码,给后台留下安全隐患。
  • 公开而防护薄弱的后台。一些网站公然将管理后台的入口暴露,这相当于给了黑客一个很好的入口。有些网站后台对密码输错没有限制,有的直接提示“密码错误”(应该提示“账户或密码错误”,这一危险做法甚至存在于一些大型电子商务网站)。

  • 不打补丁的系统和应用软件。不管是服务器,还是后台使用者的电脑,都应该及时打补丁和升级,填补漏洞。否则就容易被病毒木马感染。
  • 代码程序不对用户输入进行充分的验证就将其输出或入库。这一行为的危险性毋庸置疑,将会导致各种安全问题。
  • 服务器开放了不使用的端口和功能。而闲置的功能往往安全性不好,这将导致黑客有更多机会入侵。
  • 未加密的数据传输。对某些敏感而重要的信息,采取明文传送的方式在网上传播,一旦被黑客截获,就很有可能导致系统被攻陷。
  • 明文保存重要信息。例如,直到2011年,著名的技术网站CSDN居然还在使用明文保存用户密码,没有经过任何的加密!这种做法出现在一个以技术著称的网站中,可见这种现象绝非个例。不管你的借口是什么,这种做法都是难以让人接受的。
  • 缓冲区溢出。缓冲区复制的内容超出了其本身的容量,就会导致溢出。
  • 安全性和功能性的冲突。安全性和功能性往往是冲突的,增加各种安全措施必然会导致耗费一定的系统资源,功能性必然受到或多或少的影响。正像之前说的,一些不重视安全问题的老板也会导致安全隐患。

四、有针对性的安全防护

针对上文所述的常见漏洞,我们可以有针对性的进行一些安全防护措施:

  • 制定并共同遵守规范严谨的安全性措施。所有的系统后台使用者都必须遵守这些规定,这样就可以避免许多不必要的社会工程学问题。同时,还要预防一些内鬼(被收买的员工或商业间谍)的攻击或泄露机密。
  • 尽可能的隐藏后台的所有相关信息,增加后台入口的防御。一些实用的做法会相当有效果,例如限制密码输错次数;仅仅提示“账户或密码错误”,不要去提示“账户不存在”或者“密码错误”,这虽然小小的增加了用户体验,但无疑对黑客非常有利;可以将管理后台做成单独的二级域名,且不在公网上做解析,而是在每一台使用者的电脑上配置HOSTS文件,手动解析这些二级域名,而服务器只需绑定这些域名即可。
  • 给不同的账户以授权差别。一些对技术不敏感的采编人员可以分配采编账号,并规定较小的权限,而普通的技术人员可以分配普通管理员账号,主管和专门的安全人员才分配超级管理员账号等。
  • 特权分离。例如,IIS所有的请求都由外部进程处理,这个进程运行在一个权限不高的账户下,而系统本身的重要进程才由特权更高的本地账户处理,而这些本地账户不参与任何HTTP响应。又比如Apache,它会启动主服务器进程httpd作为根进程,然后又启动许多以较低权限的nobody账户运行的httpd子进程。
  • 对一些敏感信息进行高强度的加密。可以使用SSL(安全套接字层)和其继任者TLS(安全传输层协议)技术传输密码、金额等信息。
  • 对用户密码等信息进行多层加密入库。如果条件允许(主要是外部监管条件),可以使用多层+混用式的加密方式,将密码加密后再入库。这样就算黑客获得了数据库,看到了被加密的密码,一时也难以破解。
  • 必须假设外部世界是不安全的,只开放必须的端口,只打开必须的服务,只给授权账户必须的特权。Windows、linux系统均使用“netstat”命令查看当前的端口,一些不用的端口,可以关掉。IIS、Tomcat、Apache、Nginx等服务器软件类似SMTP这种不必要的功能一律关闭,等需要时再开启。文件的读取、修改等权限,只分配给需要的授权等级。必要时,可以关闭网站后台的文件上传权限。
  • 及时安装系统和软件补丁。服务器最好下载类似360之类的辅助软件,及时的更新系统和服务器软件。
  • 充分的用户输入验证。编码人员必须时刻牢记,一旦有用户输入部分,必须对其进行充分验证和处理。还要加上出错处理机制,尽量避免暴露程序代码。
  • 数据库禁止直接外部访问。数据库只允许同一台服务器或同一局域网上的机器访问,所有与Web应用程序的交互都要通过安全的中间程序实现。某些单位允许SQL Server之类的数据库直接用IP直连,这是非常危险的做法。
  • 不要混合代码和数据。从一个悲观的角度说,HTML本身就是一个代码和数据混合的例子。HTML代码文件中会混合内容和各种JS代码,超链接的隐蔽性往往让人无意间就中招,而由于Escape编码等重塑字符外形的机制存在,HTML本身会变得更加扑朔迷离,导致脚本攻击有机可乘。但是,运行于服务器端的编程语言就可以将代码和数据分开,通过面向对象的封装功能,可以较好的隐藏数据。
  • 启用日志。Windows、Linux系统有系统日志,类似IIS、Tomcat、Apache、Nginx等主流服务器软件,以及MSSQL、MySQL、Oracle等数据库都有日志系统,应该启用这些日志,随时查看到底发生了什么事情。需要注意的是,要设置日志的自动保存时间,或覆盖条件,避免日志文件占满了磁盘空间导致影响服务器性能和正常的日志记录。
  • 充分的出错、崩溃反应机制和应急演练。虽然,我们自信做足了防护,但计算机系统是一个极其复杂的系统,另外还存在类似DDoS这种几乎无解的存在,计算机安全问题的发生往往只是时间问题。当程序出错,我们是否有处理机制?系统崩溃的时候,我们是否有应急的预案去快速的响应和处理?就比如灾难演练一样,这些预案和演练往往导致结果的天壤之别。
  • 吃一堑,长一智,这是最后也是最有效的一招。在遇到安全问题后,不管有没有解决,一定要尽可能的查出出现问题的原因,并思考,系统还存在类似的薄弱点吗,并去修补整个系统类似的问题,确保以后不再发生。
注意:本页面内容为W3xue原创,未经授权禁止转载,违者必究!
来源:W3xue  发布时间:2017/11/5 16:36:29
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号