厦门黄阿玛网络科技有限公司欢迎您!
  1. 首页
  2. 新闻中心
  3. 网络安全资讯
  4. 内容

Web服务器安全防护的常见手段

作者:safewos 日期:2020-04-09 人气:1324

  在目前,随着智能手机的普及,web应用也随之泛滥,但是对于一些比较重要的web应用,比如金融、游戏行业,是不是也应该重视下服务器安全呢?对于Web服务器安全防护的常见手段你们有知道多少呢?这里跟大家普及一下比较常见的Web服务器安全防护手段。

Web服务器安全防护的常见手段

Web服务器安全防护的常见手段

  1、SQL注入攻击

  SQL注入攻击,这个是最常聊到的话题,使用过Java的开发人员,第一个反应就是一定要使用预编译的PrepareStatement,是吧?

  什么是SQL注入攻击

  攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。

  用户登录,输入用户名 lianggzone,密码 ‘ or ‘1’=’1 ,如果此时使用参数构造的方式,就会出现:

  select * from user where name = 'lianggzone' and password = '' or '1'='1'

  不管用户名和密码是什么内容,使查询出来的用户列表不为空。

  现在还会存在SQL注入攻击么

  这个问题在使用了预编译的PrepareStatement后,安全性得到了很大的提高,但是真实情况下,很多同学并不重视,还是会留下漏洞的。举个例子,看看,大家的代码中对 sql 中 in 操作,使用了预编译,还是仍然还是通过字符串拼接呢?

  案例

  ' or '1'= '1。这是最常见的sql注入攻击,当我们输如用户名 jiajun ,然后密码输如'or '1'= '1的时候,我们在查询用户名和密码是否正确的时候,本来要执行的是select * from user where username='' and password='',经过参数拼接后,会执行sql语句 select * from user where username='jaijun' and password=' ' or ' 1'='1 ',这个时候1=1是成立,自然就跳过验证了。

  但是如果再严重一点,密码输如的是';drop table user;--,那么sql命令为select * from user where username='jiajun' and password='';drop table user;--' 这个时候我们就直接把这个表给删除了

  被攻击的原因

  sql语句伪造参数,然后在对参数进行拼接的后形成破坏性的sql语句,最后导致数据库受到攻击

  如何防范SQL注入攻击

  使用预编译的PrepareStatement是必须的,但是一般我们会从两个方面同时入手。Web端有效性检验。限制字符串输入的长度,服务端不用拼接SQL字符串。 使用预编译的PrepareStatement。 有效性检验。(为什么服务端还要做有效性检验?第一准则,外部都是不可信的,防止攻击者绕过Web端请求) 过滤SQL需要的参数中的特殊字符。比如单引号、双引号。

  2、XSS攻击

  什么是XSS攻击

  跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。

  XSS攻击有多可怕

  蛮早之前,我曾经找了几个网站做个测试,其实大家对XSS攻击的防范还是不够,都成功的注入了测试脚本。

  甚至,还有攻击者提交恶意的javascript代码的评论信息或者反馈信息(这些信息,正常客户端没有做xss校验,会存在客户端注入问题),所有访问者访问该内容时,都会执行这段恶意的javascript代码。

  案列

  比如说我写了一个博客网站,然后攻击者在上面发布了一个文章,内容是这样的 ,如果我没有对他的内容进行处理,直接存储到数据库,那么下一次当其他用户访问他的这篇文章的时候,服务器从数据库读取后然后响应给客户端,浏览器执行了这段脚本,然后就把该用户的cookie发送到攻击者的服务器了。

  被攻击的原因

  用户输入的数据变成了代码,比如说上面的script,应该只是字符串却有了代码的作用。

  如何防范XSS攻击

  前端服务端,同时需要字符串输入的长度限制。前端服务端,同时需要对HTML转义处理。将其中的”<”,”>”等特殊字符进行转义编码。

  3、CSRF攻击

  什么是CSRF攻击

  跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。可以这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF能做的事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。

  案列

  这个例子可能现实中不会存在,但是攻击的方式是一样的。比如说我登录了A银行网站,然后我又访问了室友给的一个流氓网站,然后点了里面的一个链接 www.A.com/transfer?account=666&money=10000,那么这个时候很可能我就向账号为666的人转了1w软妹币

  注意这个攻击方式不一定是我点了这个链接,也可以是这个网站里面一些资源请求指向了这个转账链接。

  被攻击的原因

  用户本地存储cookie,攻击者利用用户的cookie进行认证,然后伪造用户发出请求

  如何防范CSRF攻击

  安全框架,例如Spring Security。

  token机制。在HTTP请求中进行token验证,如果请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。 验证码。通常情况下,验证码能够很好的遏制CSRF攻击,但是很多情况下,出于用户体验考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。 referer识别。在HTTP Header中有一个字段Referer,它记录了HTTP请求的来源地址。如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。但是,服务器并非都能取到Referer。很多用户出于隐私保护的考虑,限制了Referer的发送。在某些情况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。

  4、文件上传漏洞

  什么是文件上传漏洞

  文件上传漏洞,指的是用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。许多第三方框架、服务,都曾经被爆出文件上传漏洞,比如很早之前的Struts2,以及富文本编辑器等等,可能被一旦被攻击者上传恶意代码,有可能服务端就被人黑了。如何防范文件上传漏洞 文件上传的目录设置为不可执行。 判断文件类型。在判断文件类型的时候,可以结合使用MIME Type,后缀检查等方式。因为对于上传文件,不能简单地通过后缀名称来判断文件的类型,因为攻击者可以将可执行文件的后缀名称改为图片或其他后缀类型,诱导用户执行。 对上传的文件类型进行白名单校验,只允许上传可靠类型。 上传的文件需要进行重新命名,使攻击者无法猜想上传文件的访问路径,将极大地增加攻击成本,同时向shell.php.rar.ara这种文件,因为重命名而无法成功实施攻击。 限制上传文件的大小。 单独设置文件服务器的域名。

  访问控制,一般来说,“基于URL的访问控制”是最常见的。

  5、垂直权限管理

  访问控制实际上是建立用户与权限之间的对应关系,即“基于角色的访问控制”,RBAC。不同角色的权限有高低之分。高权限角色访问低权限角色的资源往往是被允许的,而低权限角色访问高权限的资源往往被禁止的。在配置权限时,应当使用“最小权限原则”,并使用“默认拒绝”的策略,只对有需要的主体单独配置”允许”的策略,这在很多时候能够避免发生“越权访问”。

  例如,Spring Security, Apache Shiro都可以建立垂直权限管理。

  6、水平权限管理

  水平权限问题在同一个角色上,系统只验证了访问数据的角色,没有对角色内的用户做细分,由于水平权限管理是系统缺乏一个数据级的访问控制所造成的,因此水平权限管理又可以称之为“基于数据的访问控制”。

  举个理解,比如我们之前的一个助手产品,客户端用户删除评论功能,如果没有做水平权限管理,即设置只有本人才可以删除自己的评论,那么用户通过修改评论id就可以删除别人的评论这个就存在危险的越权操作。

  这个层面,基本需要我们业务层面去处理,但是这个也是最为经常遗落的安全点。

  7、ddos攻击

  什么是ddos攻击

  分布式拒绝服务攻击(Distributed Denial of Service),简单说就是发送大量请求是使服务器瘫痪。DDos攻击是在DOS攻击基础上的,可以通俗理解,dos是单挑,而ddos是群殴,因为现代技术的发展,dos攻击的杀伤力降低,所以出现了DDOS,攻击者借助公共网络,将大数量的计算机设备联合起来,向一个或多个目标进行攻击。

  案例

  SYN Flood ,简单说一下tcp三次握手,客户端先服务器发出请求,请求建立连接,然后服务器返回一个报文,表明请求以被接受,然后客户端也会返回一个报文,最后建立连接。那么如果有这么一种情况,攻击者伪造ip地址,发出报文给服务器请求连接,这个时候服务器接受到了,根据tcp三次握手的规则,服务器也要回应一个报文,可是这个ip是伪造的,报文回应给谁呢,第二次握手出现错误,第三次自然也就不能顺利进行了,这个时候服务器收不到第三次握手时客户端发出的报文,又再重复第二次握手的操作。如果攻击者伪造了大量的ip地址并发出请求,这个时候服务器将维护一个非常大的半连接等待列表,占用了大量的资源,最后服务器瘫痪。

  CC攻击,在应用层http协议上发起攻击,模拟正常用户发送大量请求直到该网站拒绝服务为止。

  被攻击的原因

  服务器带宽不足,不能挡住攻击者的攻击流量

  如何防范ddos攻击

  最直接的方法增加带宽。但是攻击者用各地的电脑进行攻击,他的带宽不会耗费很多钱,但对于服务器来说,带宽非常昂贵。

  云服务提供商有自己的一套完整DDoS解决方案,并且能提供丰富的带宽资源

  Web服务器安全防护的常见手段,主要有以上几种,尤其是分别是xss攻击,CSRF攻击,SQL注入,DDOS攻击,这4种,算是最为常见的,这也需要服务端的开发者在日常工作时就做好相应的防范措施。

你觉得这篇文章怎么样?

00