初学安全

 一:什么是安全测试? 

   安全性测试(security testing)是有关验证应用程序的安全服务和识别潜在安全性缺陷的过程。  
注意:安全性测试并不最终证明应用程序是安全的,而是用于验证所设立策略的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。
 
二:安全测试分析的 重要性?   
   安全性分析”( safety analysis)是一种系统性的分析,应在研发过程的早期开始进行,用于确定产品在每一个使用模式中执行其功能的方式,识别潜在的危险,预计这些危险对人员及(或)设备可能造成的损害,并确定消除危险的方法。其中 对于计算机系统来说,安全性分析的一项重要内容是“软件安全性分析”,这是对软件程序进行的一种分析,以保证程序在其设计的运行环境中,不会引起(或可以容忍的小概率引起)或诱发对人员或设备的危害。例如多级火箭一级点火、二级点火指令如果错了,火箭就会失败。但只要对火箭指令及传递机构采取足够的防错设计,错发指令的概率就可以小到能容忍的程度。如果各关键项目的开发单位能从软件安全性这方面重视“安全”这个题目,那么项目的安全性链条就不会轻易地由于诸如小数点错位的原因而断开。
 
三:web安全测试常见的测试点有哪些?  
   1、问题: 没有被验证的输入
  测试方法:
  数据类型(字符串,整型,实数,等)
  允许的字符集
  最小和最大的长度
  是否允许空输入
  参数是否是必须的
  重复是否允许
  数值范围
  特定的值(枚举型)
  特定的模式(正则表达式)
  2、问题: 有问题的访问控制
  测试方法:
  主要用于需要验证用户身份以及权限的页面,复制该页面的url地址,关闭该页面以后,查看是否可以直接进入该复制好的地址
  例:从一个页面链到另一个页面的间隙可以看到URL地址
  直接输入该地址,可以看到自己没有权限的页面信息,
  3、 错误的认证和会话管理
  例:对Grid、Label、Tree view类的输入框未作验证,输入的内容会按照html语法解析出来
  4、 缓冲区溢出
  没有加密关键数据
  例:view-source:http地址可以查看源代码
  在页面输入密码,页面显示的是 *****, 右键,查看源文件就可以看见刚才输入的密码,
  5、 拒绝服务
  分析:攻击者可以从一个主机产生足够多的流量来耗尽狠多应用程序,最终使程序陷入瘫痪。需要做负载均衡来对付。
  6、 不安全的配置管理
  分析:Config中的链接字符串以及用户信息,邮件,数据存储信息都需要加以保护
  程序员应该作的: 配置所有的安全机制,关掉所有不使用的服务,设置角色权限帐号,使用日志和警报。
  分析:用户使用缓冲区溢出来破坏web应用程序的栈,通过发送特别编写的代码到web程序中,攻击者可以让web应用程序来执行任意代码。
  7、 注入式漏洞

四:常见的Web安全测试方法有哪些?
   1.  数据验证类型: 如果web server端提交sql语句时,不对提交的sql语句验证,那么一个黑客就可暗喜了。他可将提交的sql语句分割,后面加一个delete all或drop database的之类语句,能将你的数据库内容删个精光!我这一招还没实验在internet网站上,不知这样的网站有没有,有多少个。反正我负责的那个web系统曾经发现这样的问题。
  2.  数据验证流程:一个好的web系统应该在IE端,server端,DB端都应该进行验证。但有不少程序偷工减料,script验证完了,就不管了;app server对数据长度和类型的验证与db server的不一样,这些都会引发问题。有兴趣的可参看一下script代码,设计一些case,这可是你作为一个高级测试人员的优秀之处哦。我曾修改了页面端的script代码,然后提交了一个form,引发了一个系统的重大漏洞后门
  3.  网络加密,数据库加密不用说了吧。
  WEB软件最常碰到的BUG为:
  1、SQL INJETION
  2、对文件操作相关的模块的漏洞
  3、COOKIES的欺骗
  4、 本地提交的漏洞
  ●SQL INJETION的测试方法
  原理:
  如有一新闻管理系统用文件news.asp再用参数读取数据库里的新闻譬如
  http://www.xxx.com/news.asp?id=1这一类网站程序
  如果直接用
  rs.open "select * from news where id=" &
  cstr(request("id")),conn,1,1
  数据库进行查询的话即上面的URL所读取的文章是这样读取的
  select * from news where id=1
  懂得SQL语言的就知道这条语言的意思是在news读取id为1的文章内容。
  但是在SQL SERVER里select是支持子查询和多句执行的。如果这样提交URL的话
  http://www.xxx.com/news.asp?id=1and 1=(select count(*) from admin
  where left(name,1)=a)
  SQL语句就变成了
  select * news where id=1 and 1=(select count(*)
  from admin where left(name,1)=a)
  意思是admin表里如果存在字段字为name里左边第一个字符是a的就查询news表里id为1的内容,news表里id为1是有内容的,从逻辑上的角度来说就是1&P。只要P为真,表达式就为真,页面会返回一个正确的页面。如果为假页面就会报错或者会提示该id的文章不存在。黑客利用这点就可以慢慢得试用后台管理员的用户和密码。

你可能感兴趣的:(安全问题)