发布新日志

  • 三大措施将SQL注入攻击的危害最小化

    过客一个 发布于 2010-04-01 11:44:00

    使用用户提供的数据进行数据库查询的任何应用程序是SQL注入攻击的一个潜在目标。数据库管理员可能无法完全阻止针对其数据库服务器的SQL注入式攻击;但是,管理员们和应用程序开发人员可以做一些事情,将这些攻击的影响最小化。那么 

     

    数据库管理员可以做什么呢?

     

     

     

    不要让数据库和Web服务器放在同一台计算机上。

     

    使用防火墙或不可路由的IP地址来阻止到数据库的互联网访问。一旦配置完毕,来自数据库服务器的数据包将不能被转发到互联网。在Web服务器上需要添加一条路由,这样才能找到数据库服务器。

     

    配置可信任的IP接入和访问(例如,IPSEC),以控制哪些机器能够与数据库服务器通信。

     

    从数据库服务器上移除所有的示例脚本和应用程序。

     

    为每一个应用程序的数据库连接账户使用一个专用的低特权账户。不要使用sa、dba、admin。

     

    不要准许用户或应用程序直接访问数据库表。要使用对数据库拥有有限访问的应用程序角色。如果应用程序仅需要读取访问,就要将数据库的访问限制为只读。

     

    从生产数据库中移除未用的存储过程。

     

    将对应用程序的访问仅授权给用户创建的存储过程。

     

    不要将应用程序的“_ANY_”授权给操作系统命令或系统存储过程。

     


    应用程序的设计人员可以做什么呢?

     

     

     

    程序设计人员肩负着保障Web应用程序安全的重要责任。在设计和编码阶段加强安全审察才是杜绝程序漏洞的关键。大体而言,程序设计者至少应当实施下面的一些措施:

     

    要创建应用程序要生成的特定的通用错误消息。因为,在一次SQL注入攻击期间,通过数据库生成的默认的错误消息,攻击者可以获取有价值的信息,如表格和栏的名称。

     

    在将用户服务的输入提交给数据库之前,验证用户输入的合法性。仅接受所期望的用户输入,并限制其长度。注意,只要可能,使用白名单列表检查所有的用户输入。应用程序服务器防火墙可被用于检查所有的输入,并仅接受那些符合标准的输入。

     

    在程序开发期间,使用Web应用程序扫描工具发现代码中漏洞。

     

    将Web应用程序与SQL数据库隔离开来,将应用程序所要求的所有SQL放置在数据库服务器上。

     

    使用静态查询。如果需要动态查询,就使用准备好的语句。

     

    使用一个安全的接口,如ADO的Command Object,使应用程序执行存储过程。

     

    检测SQL注入漏洞和攻击

     

     

     

    要检测易于受攻击的应用程序并不是简单事情,因为这些漏洞可能存在于面向用户的任何应用程序接口中。虽然并非所有的SQL注入攻击技术都易于检测,但数据库管理员或开发人员可以做以下的事情:

     

    阅读Web服务器的日志。有时,在这些日志中就可轻易地发现SQL注入攻击,因为这时写往日志的登录项目要比平常多得多。

     

    查找HTTP 404和HTTP 500错误日志项目,以及程序生成的检查用户输入的其它的错误日志项目。

     

    使用Web应用程序扫描工具。这些工具可被用于警告数据库管理员,告知管理员应用程序中易受SQL注入攻击的地方。

     

    在部署应用程序之前,检查其中的SQL注入因素至关重要。

  • QTP 专用函数

    Lucky.liu 发布于 2010-04-02 12:25:00

    序列号 函数名 函数作用 第一参 第二参 第三参 第四参 第五参 返回值
      1 QTP_Small() 让QTP运行时保持最小化
      2 QTP_Big() '恢复QTP窗口
      3 "QTP_WriteFile(pathway,words)" '写文件函数(追加) 文件路径 写入内容
      4 "Function QTP_WriteFile_Change(pathway,words)" '写文件函数(改写) 文件路径 写入内容
      5 "QTP_Read_Excel(pathway,sheetname,x,y)" '读Excel文件元素 文件路径 工作表名 行值 列值
      6 "QTP_Write_Excel(pathway,sheetname,x,y,content)" '写Excel文件元素并保存退出 文件路径
      工作表名 行值 列值 写入内容
      7 "QTP_Msgbox(Value,waitTime,Title)" 定时停留弹出框函数 弹出值 弹出框停留时间 弹出框标题
      8 "QTP_Change_Color(pathway,sheetname,x,y,color)" '改变Excel的单元格颜色 文件路径 工作表名
      行值 列值 颜色(只接受red和green)
      9 QTP_Capture(pathway) '捕获当前屏幕(截图) 保存图片路径
      1 Function CreateExcel() 生成Excel对象和默认新工作表 Excel对象
      2 Sub CloseExcel(ExcelApp) 关闭指定的Excel Excel对象
      3 "Function SaveWorkbook(ExcelApp, workbookIdentifier, path)" 保存工作表 Excel对象 工作表名
      Excel文件路径 1成功,0失败
      4 "Sub SetCellValue(excelSheet, row, column, value)" 给Excel元素赋值 工作表名 行 列 值
      5 "Function GetCellValue(excelSheet, row, column)" 获得指定元素值 工作表名 行 列 值,0未找到元素
      6 "Function GetSheet(ExcelApp, sheetIdentifier) 返回工作表 工作表
      7 "Function InsertNewWorksheet(ExcelApp, workbookIdentifier, sheetName)" 插入一个新的工作表 Excel对象
      工作表名 新工作表名 新工作表对象
      8 Function CreateNewWorkbook(ExcelApp) 建立一个新表 Excel对象
      9 "Function OpenWorkbook(ExcelApp, path)" 打开一个之前保存过的工作表 Excel对象 路径
      10 "Sub ActivateWorkbook(ExcelApp, workbookIdentifier)" 激活工作表 Excel对象 工作表名
      11 "Sub CloseWorkbook(ExcelApp, workbookIdentifier)" 关闭工作表 Excel对象 工作表名
      12 "Function CompareSheets(sheet1, sheet2, startColumn, numberOfColumns, startRow, numberOfRows, trimed)" 比较工作表
      1工作表一2工作表二 3起始列 4列数 5起始行 6行数 默认参数 true一致 false不一致
      QTP与Robot通用函数:
      序列号 函数名 函数作用 第一参 第二参 第三参 第四参 返回值
      1 Get_Data() 获取当前日期
      2 Get_Time() 获取当前时间
      3 "Get_RandNum(fromNum,toNum)" 随机函数生成 起始生成值 结束生成值 随机数
      4 "Swap(byref a,byref b)" 值交换函数 交换参数1 交换参数2 (引用调用)
      5 IsPrimeNumber(num) 是否是质数函数 '是质数返回true,否则返回false
      6 "ReadLine(pathway, rowcount)" 读指定文本文件指定行内容 文件路径 行数
      "返回指定行内容,""文本越界"",""文件不存在"""
      7 Function MakeString(inputlength) 随机生成字符串 字符串长度 随机字符串
      8 Sub ZYGLQ() 启动资源管理器
      9 Sub Run() 启动运行
      10 "SendMail(SendTo, Subject, Body, Attachment)" 调用outlook发送电子邮件 收件人 主题 邮件内容 附件
      11 "Function NoRepeat(Inp,Sp)" 去掉字符串中的重复项 输入字符串 字符串分隔符 无重复的字符串
      12 Function GetLen(Str) 求字符串长度(中文算2个西文字符) 输入字符串
      13 Sub RunApp(command) 运行指定程序 运行程序名
      14 Function Nextday(ByVal inputday) 求下一天是几号的函数 原始日期 原始日期后一天的日期
      15 Function ISLeapYear(ByVal inYear) 判断是否闰年 年份 true:是闰年 false:非闰年
      16 "Function Days(SourceData, DesData)" 计算两个日期之间相隔几天 初时日期 目的日期 相隔天数
      17 Function Identification(Text1) 检查身份证号是否正确 身份证号 正确:true 错误:false
      18 "Access_GetCount(DBlocation,TableName,Value)" 查询Access数据库字符出现次数 数据库存放位置 表名
      查询的值 返回值出现的次数
      19 Function checkString (myString) 检查是否存在数字 输入字符串 true:存在数字 false:不存在数字
      20 "Function BubbleSort(VString,Spl,Func)" 按ASCII码值冒泡排序 待排序的字符串 分隔符 排序方式:
      1降序,2升序 排序完的序列
  • (转)JIRA和TD的对比分析报告(06年)

    garfield0610 发布于 2009-06-04 10:26:10

    一、            前言

    对JIRA工具进行调研和试用,并且与TD进行详细的对比分析。具体情况如下所述。

    二、            介绍

    1.     JIRA介绍

    JIRA是集项目计划、任务分配、需求管理、错误跟踪于一体的商业软件。JIRA创建的问题类型包括New FeatureBugTaskImprovement四种,还可以自己定义,所以它也一是过程管理系统。Jira融合了项目管理、任务管理和缺陷管理,许多著名的开源项目都采用了JIRA

    JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公 司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。同时,开源则是其另一特色,在用户购买 其软件的同时,也就将源代码也购置进来,方便做二次开发。正因为其开放性,价格上自然也相当不菲,对于中小型的软件企业做项目管理,则又要另寻出路。

    功能列表:

    l         问题追踪和管理(问题类型包括New Feature-新功能、Bug-缺陷、Task-任务、Improvement-改进 四种);

    l         问题跟进情况的分析报告;

    l         项目类别管理功能;

    l         组件/模块负责人功能;

    l         项目email地址功能;

    l         无限制的工作流。

    2.     TD介绍

    TestDirector 是业界第一个基于Web的测试管理系统,它可以在您公司组织内进行全球范围内测试的协调。通过在一个整体的应用系统中提供并且集成了测试需求管理、测试计划和用例管理、测试日程控制、测试执行和缺陷跟踪等功能,TestDirector 极大地加速测试过程。

    功能列表:

    l         域及工程管理;

    l         用户管理;

    l         工程进行定制(属性和列表、用户、用户组、版本、工作流、邮件通知等)

    l         测试需求管理;

    l         测试计划和用例管理;

    l         测试日程控制;

    l         测试执行和缺陷追踪。

    l         强大的统计分析功能。

    三、            JIRA的优缺点

    1.     JIRA的优点

    用它管理项目,跟踪任务、bug,通过JIRA的邮件通知功能进行协作通知,在实际工作中使工作效率提高很多,效果非常不错!安全性、可扩展性方面发挥到了极致!

    JIRA不仅仅是一个缺陷跟踪系统,通过Jira,可以整合客户、开发人员、测试人员,各人各司其职,信息很快得到交流和反馈,让大家感到软件开发在顺利快速的进行,朝意想的目标迈进。IDEA下的Jira插件,主要为开发人员服务,实时将信息反馈给开发人员,开发人员同时迅速地将修复的结果信息反馈到跟踪系统中,最后通过持续集成,软件迅速地完成了更新,这些方便便捷的操作会极大地鼓舞软件开发中的各方人员,甚至包括客户,及时响应,相信是每一个客户都会欣赏的。

    跟同类软件产品TestTrackerClearQuestTestDirector相比,JIRA的性价比最好!因为TestTrackerClearQuestTestDirector等这几类软件都是根据用户数来定价的,而JIRA软件不限制用户数!不限制创建项目数和Issue的数量!一年内免费更新版本!!

    2.     JIRA的缺点

    对于测试需求、测试用例等都没有提供直接的方式进行管理。

    四、            TD的优缺点

    1.     TD的优点

    TestDirector能消除组织机构间、地域间的障碍。它能让测试人员、开放人员或其它的IT人员通过一个中央数据仓库,在不同位置就能互通测试信息。TestDirector将测试过程流水作业从测试需求管理,到测试计划,测试日程安排,测试执行以至到出错后的跟踪仅在一个基于浏览器的应用中便可完成。

    强大的统计分析功能:测试过程的最后一步是分析测试结果,确定应用程序是否已布属成功或需要再次的测试。TestDirector常规化的图表和报告和在测试的任一环节帮助您对数据信息进行分析。TestDirector还以标准的HTMLWord形式提供一种生成和发送正式测试报告的一种简单方式。测试分析数据还可简便地输入到一种工业标准化的报告工具,如ExcelReportSmith Crystal Reports,和其它类型的第三方工具。

    2.     TD的缺点

    由于其早期版本不能灵活的对项目管理流程进行配置,又由于其昂贵的价格,因此目前应用的企业也不是很多。

    五、            目前使用情况

    1.     JIRA的使用情况

    国际化缺陷跟踪管理的专业软件:JIRA,它用于帮助公司和团队跟踪工作中的问题,管理和记录这些问题的处理过程。现在, JIRA已经被分布于35个国家的2000多个组织管理人员、开发人员、分析人员、测试人员和其他人员所广泛使用。

    2.     TD的使用情况

    在工业级软件项目领域,由于Mercury是测试软件领域的老大(比较有名的如LoadRunnerWinRunner等),因此它的TD也成为了缺陷跟踪系统的标杆产品。其也是最早通过Web方式来进行管理的缺陷跟踪软件,目前也是被业界广泛使用的。

    六、            对比分析和总结

    对比要点

    JIRA

    TD

    功能侧重点

    集项目计划、任务分配、需求管理、错误跟踪于一体。

    主要用于测试流程管理,包括测试需求、测试计划和用例、测试执行和缺陷追踪管理。

    自定义过程

    支持

    支持

    是否支持图表,报表,查询

    有问题跟进情况的分析报告,但其报表分析功能比较简单

    有强大的报表分析功能,对测试流程的每个环节都能以图表方式进行分析报告

    价格

    JIRA软件不限制用户数

    根据用户数来定价格

    可扩展性

    提供二次开发,可扩展性强

    一般

    技术支持

    在国内有代理,有技术支持

    在国内有代理,有技术支持

    适用平台

    JIRA能够运行在已有软、硬件平台上。他能够运行于所有的安装了JDK的操作系统上,并能够跟几乎所有的兼容JDBC的数据库一起使用

    一般用于Windows平台

    易用性

    容易使用

    容易使用

    灵活性

    灵活性强

    一般

    安全性

    安全性强

    一般

    是否支持email通知功能

    支持

    支持

    是否支持用户管理功能

    支持

    支持

    是否易于定制

    易于定制

    易于定制

    其实从以上的对比分析,这两个工具的侧重点是不一样的,JIRA更加侧重于缺陷追踪和项目管理;而TD更侧重于测试过程管理,所以我们应该考虑的重点是如何将两个工具更好地和当前的项目管理和质量管理工作相结合的问题,将这两个工具运用在各自重要的地方。

    以上的内容,都参考网上其他人很多相关资料,在这里对他们表示感谢和敬意。文中有不对之处,也请大家多多提出意见和建议,谢谢!——作者的话。

    报告时间:2006-9-11

    调研时间:20067月至9

  • web server 工作原理与编程方法

    eva0898 发布于 2009-06-14 11:09:16

    WEB Server工作原理及其应用编程方法

    说到WEB Server,就不能不提到HTTP协议

    HTTPHyper Text Transfer Protocol的缩写,中文译称超文本传输协议。它和FTP协议一样,都是基于TCP的应用层协议,但它们服务器端使用的端口号不一样:通常情况下,FTP使用的端口号是20(数据链接)、21(控制链接),而HTTP使用的端口号是80HTTP协议是一个采用的请求/响应模型的协议。HTTP协议最典型的应用是在WEB服务器和WEB浏览器之间传递数据。

    下面举个例子来说明WEB浏览器和WEB服务器之间的交互过程:

    1)网络环境

    附注:服务器端包括两个文件:index.htmltibug.gif

    2)建立链接

    HTTP ClientWEB浏览器IE)和HTTP ServerWEB服务器)进行数据传递的之前,需要在两者之间建立一个TCP链接,用于在两者之间传输HTTP报文。

    当我们在IE的地址栏里输入:http://192.168.1.54\index.html并回车时,可以用软件sniffer捕获H1H2之间的传输数据。在分析报文数据之前,我们先来分析一下它的含义:

    http:// 代表超文本传输协议,一般情况下不用输入(默认的)

    192.168.1.54 代表WEB服务器的地址(http://已暗示服务器端端口号为80

    \index.html 代表根目录下的网页文件

    因此这句话的含义就是获取服务器上192.168.1.54:80根目录下的index.html文件。

    sniffer捕获到的前三个包分析结果如下:

    序号

    源端地址

    目的地址

    包内容

    备注

    1

    192.168.1.55:1903

    192.168.1.54:80

    SYN

    同步

    2

    192.168.1.54:80

    192.168.1.55:1903

    SYN+ACK

    同步+应答

    3

    192.168.1.55:1903

    192.168.1.54:80

    ACK

    应答

    由此可见这三个TCP包是用来并成功地在HTTP Client(临时端口1903)和HTTP Server(固定端口80)之间建立一个TCP链接。

    3)提交获取index.html文件的请求

    建立好链接之后,客户端会向服务器端发一个HTTP报文来请求获取index.html文件,用sniffer捕获的结果如下:

    从该报文的TCP报头可知该HTTP报文大小为364字节,从HTTP报头可以看出该HTTP报文仅仅含有HTTP包头,而没有数据。HTTP报头分为8行,每行以回车-换行符(CRLF "\r\n")结束。其中第一行称为Request-LineHTTP协议为它定义了一个具体的语法格式:

    Method  Request-URI  HTTP/1.1  CRLF

    这里,Method=GETRequest-RUI=/index.html//index.html一样),服务器端处理这样的Request-Line时会解释为客户端请求获取服务器根目录下的index.html文件。第2-7行一起称为一个Header,其中每一行称为一个头域,每一个头域又由域名、冒号和域值三个部分组成,它们是用来告诉服务器一些与客户端相关的信息,让服务器据此来做一些决策。最后一行由回车-换行符组成。

    接下来,我应该注意到TCP包头中PUSH位置1了,表示客户端要求服务器端尽快把这个包交给应用层,这时,服务器端向客户端发送一个应答,表示服务器端已经这个报文交给了应用层去处理。用sniffer捕获到的前三个包分析结果如下:

    序号

    源端地址

    目的地址

    包内容

    备注

    5

    192.168.1.54:80

    192.168.1.55:1903

    ACK

    应答

    4)获取index.html文件

    接下来服务器端就向客户端传输index.html文件。由于index.html文件的大小为3078字节,而TCP包最大的数据容量也就14601460=1500-20-20HTTP包的最大数据容量比1460还要小,因为还要扣除HTTP包头),因此,要分多个TCP包才能完成此文件的传输。使用sniffer捕获的结果如下(只截取了HTTP包头部分):

    从这里可以看出,服务器端的数据是分三次传送到客户端的,TCP协议传送的数据字节数为33563356=1460+1460+436),HTTP报文数据的字节数为3078Content-Length)。这里面,为什么TCP协议传送的数据字节数比HTTP协议传送的数据字节数要多278呢?这是由于第一个TCP报文数据里包含了278个字节的HTTP报头,也就是上图标有行号的1-10共十一行数据。这里的HTTP报头称为Full-Response报头,分为11行。其中第一行成为Response-LineHTTP协议为它定义了一个具体的语法格式:

    HTTP/1.1  Status-Code Reason-Phrase  CRLF

    这里,Status-Code=200Reason-Phrase=OK,客户端处理这样的Response-Line时会解

    释为服务器端正确响应了客户的请求。第2-9行一起称为一个Header,其中每一行称为一个头域,每一个头域又由域名、冒号和域值三个部分组成。它们是用来告诉客户器一些相关的信息,譬如:服务器端响应客户端的数据长度由Content-Length: 3078头域表示;接收完数据之后是否关闭该TCP链接由Connection: close表示;传送的数据格式由Content- Type: text/html表示等。最后一行由回车-换行符组成。

    至此,index.html文件就传送到客户端,并由客户端的IE浏览器进行解释显示了。

    5)关闭链接

    我们再来看看第4)步中3TCP报文中的最后一个,用sniffer捕获并分析,结果如下(仅分析TCP包头):

    这里看出PushFIN位都置上了1,表示服务器端要求客户端尽快把这个包提交给应用层(Push)并断开这个TCP链接(FIN)。客户端作出应响应并配合断开这个链接。用sniffer捕获到的前三个包分析结果如下:

    序号

    源端地址

    目的地址

    包内容

    备注

    9

    192.168.1.55:1903

    192.168.1.54:80

    ACK

    应答

    10

    192.168.1.55:1903

    192.168.1.54:80

    FIN

    断开

    11

    192.168.1.54:80

    192.168.1.55:1903

    ACK

    应答

    至此,一次完整的TCP链接的建立èHTTP请求èHTTP响应èTCP链接的断开过程就完成了。

    6IMG标号的处理

    当客户端IE浏览器解释并显示index.html文件时,会发现里面有这样一条语句:

    <IMG src="/tibug.gif" width=236></IMG>

    它表示该index.html文件中插入了一个名为tibug.gif的图形文件,显示宽度位236个象素,同时也告知了该文件位于WEB服务器的根目录下。但是在前面的传输过程中并没有把该文件传输到客户端,所以IE浏览器为了能完整的显示index.html文件,就必须得重新建立TCP链接,通过HTTP协议把该文件传过来。其过程同获取index.html文件的过程基本相同。

    sniffer捕获到并分析,其结果如下:

    序号

    源端地址

    目的地址

    包内容

    备注

    12

    192.168.1.55:1904

    192.168.1.54:80

    SYN

    同步

    13

    192.168.1.54:80

    192.168.1.55:1904

    SYN+ACK

    同步+应答

    14

    192.168.1.55:1904

    192.168.1.54:80

    ACK

    查看(1527) 评论(0) 收藏 分享 管理

    855/5<12345