软件安全性测试(连载22)

简介: 软件安全性测试(连载22)

2.15 DDOS攻击


分布式拒绝服务攻击(Distributed denial of service attackDDOS)可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大型网站都出现了无法进行操作的情况,这样不仅仅会影响用户的正常使用,同时造成的经济损失也是非常巨大的。


如图4-50所示,一个停车场,如果停车场都被石子堆放了,车子就无法停进来,这样提供停车服务就失效了。

             

image.png

4-50 被石子铺满的停车场

DDOS攻击与此类似,如果大量垃圾数据包占满了网络I/O从而导致正常的HTTP请求找到拒绝,就形成了DDOS攻击。当年美国炸毁中国驻南斯拉夫,国内IT民间发起在某个时间段对美国驻中国大使馆的IP地址发送大量的PING命令攻击,通过ICMP协议达到DDOS攻击的目的。这次DDOS攻击长达三个小时,造成了美国使馆内的网络工作彻底瘫痪。


Web领域往往通过在自己网页上设置iframe标签中的src指向被攻击的网站,然后通过其他手段,比如基于selenium代码(在第9.2节将进行介绍)的循环控制,来频繁访问这个网页。

<iframe src="http://www.a.com"height="0" width="0">


防止DDOS攻击的方法有三种。

方法1。将访问频率高的数据放在内存缓存中。

方法2。限制请求次数。比如新浪博客,一小时内最多只能发表博文10篇,如图4-51所示。

image.png

4-51 新浪博客,一小时内最多只能发表博文10


方法3。使用验证码。

测试人员也可以通过编写自动化功能测试脚本,基于GUI的或者基于接口的都可以(第9章将进行详细介绍),利用循环语句来测试代码是否对DDOS攻击做好防范。


import requests
import unittest
class login(unittest.TestCase):
        defsetUp(self):
               self.correctusername ="cindy"
               self.correctpassword ="123456"
               self.discorrectusername ="jerry"
               self.discorrectpassword ="000000"
               self.url="http://localhost:8000/login_action/"
               self.token ="RNF3Y04qFeJkMwCDsTMn4gfMcyfQ2vUjXbcENLADEFyCSRp1pBdezZKwHhlSwqgE"
               self.cookie = {"csrftoken":self.token}
        #正确的用户名,正确的密码
        deftest_correctusername_correctpassword(self):
               payload={"username":self.correctusername,"password":self.correctpassword,"csrfmiddlewaretoken":self.token}
               for i in range(1000):
                        data =requests.post(self.url,data=payload,cookies=self.cookie)
                        #验证返回码
                       self.assertEqual("200",str(data.status_code))
                        #验证返回内容
                        self.assertIn("电子商务系统" ,str(data.text))
if __name__=='__main__':
        #构造测试集
       suite=unittest.TestSuite()
       suite.addTest(login("test_correctusername_correctpassword"))
        #运行测试集合
       runner=unittest.TextTestRunner()
       runner.run(suite)


2.16钓鱼和网页跳转


钓鱼是黑客经常采取的攻击手段。钓鱼多数采用网页跳转的技巧来实现。这里先来介绍一下网页跳转。


1)网页跳转

网页跳转一般分为客户端跳转和服务器端跳转。


客户端跳转

客户端跳转将引起URL变化,jsp代码如下

<%
    response.sendRedirect("wellcome.html");
%>


PythonDjango框架为。

returnrender(request,"index.html",{'uf':uf,"error":"用户名或者密码错误"})

当页面发生跳转以后,抓包软件会获取响应码为3XX的响应包。如图4-52所示。

image.png

4-52 网页跳转产生的3XX响应包


②服务器端跳转

服务器端跳转URL不会变化,但是仍旧会返回响应码为3XX的响应包。下段代码是Java产生的服务器端跳转,跳转后进入wellcome.html

public class HttpForwardServlet extends HttpServlet{
    @Override
    publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {
       this.doPost (request, response);
    }
    @Override
    publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
    throwsServletException, IOException{
       request.getRequestDispatcher("wellcome.html").forward(request,response);
    }
}


2)钓鱼

黑客往往通过各种诱饵,利用用户的各种心理,诱惑用户上钩,进入故意设置好的网站,从而达到钓鱼的目的。如图4-53所示。

image.png

4-53 钓鱼


QQ基金实现你发财的梦想”可能是给你短信或者微信,甚至于植入某个网站的木马,当你被其内容吸引点击后,就进入了QQ登录界面,这个登录界面其实就是黑客制作藐视QQ的网站,而非QQ官方网站。当你输入自己QQ用户名和密码后,QQ用户名和密码就被黑客截获。


有如下的HTML代码。

<a href="selenium.html"target="_blank">selenium介绍</a>
在selenium.html中,黑客通过植入如下代码来实现钓鱼的功能。
<script type='text/javascript'>
if (window.opener)  {
 window.opener.location='http://www.myhack.com/';
}
</script>


当用户点击selenium介绍连接后进入selenium.html页面,在selenium.html中通过window.opener.location把主界面跳转到黑客网站。通过对第2.4-3节的学习,知道如果把<a>标签中加入rel="noopenernoreferrer"属性,即。

<a href= "selenium.html"target="_blank" rel="noopenernoreferrer">selenium介绍</a>


就可以防止钓鱼了。另外还可以通过以下方式来防止钓鱼。

避免使用重定向和转发。

如果使用重定向和转发,则不要确定目标时涉及到用户参数。

如果需要登录,可以从session获取登录信息然后进行判断。

可以通过request获取之前的页面路径:Request.getHeader("referrer")来防止钓鱼。

可以通过上一个页面传参,本页面验证的方式。参数放在body中,不要放在URLsessioncookie中。

目录
相关文章
|
存储 前端开发 JavaScript
软件安全性测试(连载5)
软件安全性测试(连载5)
143 0
软件安全性测试(连载5)
|
SQL 存储 安全
软件安全性测试(连载21)
软件安全性测试(连载21)
147 0
软件安全性测试(连载21)
|
存储 移动开发 算法
软件安全性测试(连载19)
软件安全性测试(连载19)
105 0
软件安全性测试(连载19)
|
SQL 存储 Oracle
软件安全性测试(连载11)
软件安全性测试(连载11)
118 0
软件安全性测试(连载11)
|
存储 JavaScript 前端开发
软件安全性测试(连载3)
软件安全性测试(连载3)
110 0
软件安全性测试(连载3)
|
SQL 安全 前端开发
软件安全性测试(连载9)
软件安全性测试(连载9)
115 0
软件安全性测试(连载9)
|
安全 前端开发
软件安全性测试(连载7)
软件安全性测试(连载7)
119 0
软件安全性测试(连载7)
|
安全 程序员 网络安全
软件安全性测试(连载18)
软件安全性测试(连载18)
98 0
软件安全性测试(连载18)
|
前端开发 JavaScript
软件安全性测试(连载4)
软件安全性测试(连载4)
60 0
|
存储 安全 Java
软件安全性测试(连载24)
软件安全性测试(连载24)
125 0
软件安全性测试(连载24)
下一篇
无影云桌面