网络安全攻击类型有哪些 网络安全常见攻击手段

随着互联网的发展,网络安全
日益显的尤为重要,接下来介绍一下常见的web攻击手段。

1.XSS攻击(Cross Site Scripting) 全称跨站脚本攻击 

是一种常见的攻击手段之一,攻击者主要通过嵌入恶意脚本程序,当用户打开网页时,脚本程序便在客户端的浏览器中执行,以盗取客户端cookie,用户名密码,下载执行病毒木马程序等。

例:某网站页面有个表单,表单名称为nick,用来向服务器提交昵称信息。value值是用户输入的昵称,比如你吃菜我喝汤,这是正常输入情况,如下:

<input type="text" name="nick" value="你吃菜我喝汤">

    可是当用户输入的不是正常的字符串,而是脚本程序 如

    "/><script>alert("你是煞笔")</script><!-"

      这个表单就变成了:

      <input type="text" name="nick" value=" "/><script>alert("你是煞笔")</script><!-" ">

        这个时候input后面是不是多了一个script脚本程序,这个脚本程序弹出一个消息框,内容是"你是煞笔",当然这个示例的危害并不大,攻击的危害大小取决于用户植入的脚本。

        防御手段:

             分析:XSS之所以能够发生,通过上诉示例中可以看出,用户通过输入代码完成攻击。以html为例,里面包含了大量的”尖括号“,”单引号“,”引号“之类的特殊字符。

           方案:通过上诉分析,我们可以对用户输入的数据进行html转译处理来进行防御。

        <

        <

        >

        >

        '

        &

        "

        "

                                                                                             HTML字符转译

        如今又很多框架自身提供了转译功能,比如jstl,不需要开发人员进行二次开发

        例:使用jstl转译

        <c:out  value="${nick}"  escapeXml="true"></c:out>

          只需要将escapeXml设置为true 就可以将变量nick的值进行转译输出。

          2.CSRF攻击(Cross  Site Request forgery) 全称跨站请求伪造

          攻击者盗用你在某网站的身份如cookie,以你的名义向该网站发送恶意请求。这个就比较可怕了,能够利用你的身份发邮件,发短信,甚至转账,盗取账号等。

          原理图:

          网络安全攻击类型有哪些 网络安全常见攻击手段_网络安全

          首先用户C访问站点A,然后通过信息验证完成登陆,此时产生cookie值保存在浏览器中,然后用户C在没有退出该网站的情况下,无意中访问了恶意的站点B,此时站点B的某个页面带着站点A的cookie 向站点A 发恶意请求,站点A根据请求所带的cookie,判断此请求为用户发送的,因此处理请求  从而完成欺骗。

          用户C只需做两件事,CSRF攻击就发生了。

          1.登陆某个网站没有退出。

          2.   在没有退出的情况下(退出时,session会话结束cookie失效) 访问了其他的网站(恶意网站)

          有时候所谓的恶意网站,很可能是一个有XSS漏洞的网站

          防御手段:

          (1)将cookie设置为HttpOnly

          CSRF攻击很大程度上是利用浏览器的cookie,为了防止站内的XSS漏洞盗取cookie,需要在cookie中设置"HttpOnly"属性,这样就无法读取到cookie,避免了攻击者伪造cookie的情况出现。

          在java的servlet的API中设置的代码如下:

          response.setHeader("Set_Cookie","cookiename=cookievalue;HttpOnly");

            (2)增加token

            攻击者通过盗取cookie来完成安全验证,如果在请求中放入攻击者不能伪造的信息,该信息不在cookie中。

            因此可以在htpp请求中加入参数token,并在服务端(可在拦截器中校验:session中的token与请求中的token是否一致)校验token,如果token不存在或者存在但不正确,则拒绝请求。

            页面:

            假设请求通过post方式提交,则可以在相应的表单中增加一个隐藏域:

            <input type="hidden" name="_token" value=""/>

              服务端:

              token值在服务端生成,每次会话可以使用相同的token,会话过期token失效,攻击者无法获取token,也就无法伪造请求。

              在session中添加token:

              HttpSession session = request.getSession();
              Object token = session.getAttribute("_token");
              if(token==null || "".equals(token)){
                 session.setAttribute("_tonken",UUID.randomUUID().toString());
              }

                (3)通过Referer识别

                Http
                协议中,http头部有一个字段Referer,它记录了http请求的地址。CSRF通过其他网站发送伪造请求进行攻击,因此 可以通过校验该地址是否是该网站发出即可。

                获取Http请求Referer:

                String referer = request.getHeader("Referer");

                评论
                添加红包

                请填写红包祝福语或标题

                红包个数最小为10个

                红包金额最低5元

                当前余额3.43前往充值 >
                需支付:10.00
                成就一亿技术人!
                领取后你会自动成为博主和红包主的粉丝 规则
                hope_wisdom
                发出的红包
                实付
                使用余额支付
                点击重新获取
                扫码支付
                钱包余额 0

                抵扣说明:

                1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                余额充值