web 安全性测试

一、介绍

web安全测试指对相关web程序的安全性服务以及安全方面的缺陷进行识别的过程;

二、测试类型

        安全性测试主要包括以下几种:
        1、认证与授权
        2、Session 与 Cookie
        3、DDOS拒绝服务攻击
        4、文件上传漏洞
        5、XSS跨站攻击
        6、SQL注入
        7、暴力破解

三、认证与授权

        认证:登录功能正常 ;

策略:
    业务上是否需要登陆才能访问的功能页面,防止直接用url访问
    密码强度策略要求,如八位以上,字母大小写,数字特殊字符,三种以上,防止连续数字;
    输错密码,次数或者时间的限定
    验证码作为身份验证

        授权:每个用户拥有被授予的限定的权限

策略:

不同身份的用户有不同的页面访问权限或功能操作权限。
没有权限访问的url访问,需要做权限检查,不能直接允许访问。
防止多人使用系统管理员的权限,最好只有管理层使用。
系统权限设计越细越好,最好设计到增删改查层面。

四、seeeion和cookie

        由于HTTP是一种无状态性的协议,不要求浏览器在每次请求中标明他自己的身份,每次发个请求回个响应即可,为了识别用户身份,服务端生成session 和 cookie分分别保存在服务器和客户端。如:针对session的攻击就是跨站请求伪造,攻击者获取到sessionid,然后伪装成正常访问者;如:Cookie是保存在客户端的,如果Cookie信息被用户获取到,就会被人利用漏洞对系统进行攻击。

策略
    服务器生成sessionid时把ip与sessionid绑定,避免被伪冒;
    cookie保存在客户端,对cookie中的敏感信息加密保存,避免泄露
    cookie的作用域做限定,不同应用系统不同作用域;
    cookie中不保存系统状态控制的内容,防止被篡改。

五、DDOS拒绝服务攻击

        DDOS又称为分布式拒绝服务攻击,全称是Distributed Denial os Service。它是利用合理的请求将正常请求放大了若干倍,通过若干网络节点同时发起攻击,造成资源过载,导致服务不可用。是一种损人不利己的行为。常见有三:        
        肉鸡:通过木马让大量电脑受远程控制,执行病毒程序,服务器防火墙无法通过封锁IP的方式进行处理,唯一的解决办法就是服务器够强大。
        攻击联盟:很多人联合起来对同一个网站发起攻击,对网站流量形成压力;请求都是真实的,但是请求量过大导致服务器崩溃。服务器无法通过禁用IP、防火墙来限制,最好的解决方式,增加服务器资源。
        利用TCP建立连接的原理:TCP建立连接需要经历三次握手,简单来说就是:①C-->S ② S-->C ③C-->S ,三次握手成功就会建立TCP连接。根据这个原理,客户端模拟一个不存在IP地址向服务器发送TCP连接的请求,服务端在向客户端发起第二次握手时由于找不到IP地址,连接资源一直处于等待状态。连接数量过大时会导致服务器资源崩溃。

策略:
    增强系统自身的防御能力,防止僵死程序的植入
    关闭不必要的服务和端口
    及时更新系统补丁
    安装查杀病毒的软硬件产品,及时更新病毒库
    设置复杂口令,降低系统被控制的可能性
    检测网络和主机的脆弱性,了解网上漏洞数据库,减少被攻击可能性
    重要Web服务器,建立多个镜像实现负载均衡,

六、文件上传漏洞

          文件上传本身是web中最为常见的一种功能需求;文件上传漏洞是指用户上传了一个可执行的、非法的脚本文件,如js、php文件;并通过此脚本文件获得了执行服务器端命令的能力,给系统带来危害。

        

策略:
文件上传的过滤,用户上传的文件不可信,对文件类型进行筛选:后缀名过滤、二进制来判断文件类型
不能只看扩展名,要看文件本身的类型
修改服务器核心参数,禁止脚本引擎运行系统命令;
不要只看前端页面的限制;
文件上传的时候我们要对文件的大小进行限制
上传文件大小大于本地剩余空间大小,是否会出现异常错误。
上传是否成功的判断。上传过程中,中断,程序是否判断上传是否成功。
文件名中带有中文字符,特殊字符等的文件上传。
上传漏洞拿shell。<?php system($_GET['cmd']); ?>

七、XSS跨站攻击

        XSS攻击全称跨站脚本攻击Cross Site Scripting,为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
        如:写博客提交文本时,写入<input type="button" value="点击" οnclick="alert('你好')" />以上一行代码在输入框输入并提交成功后,如果页面出现一个可点击按钮,表示没有对输入内容进行过滤,存在安全问题。
        如:获取用户cookie;在代码修改为下列一行后,用户点击后,就直接能获取到用户cookie;
<img src="http:XXX.html" οnclick="document.getElementById('kw').value=document.cookie">

八、SQL注入

        SQL语言作为一种解释型语言,是由程序员编写的代码和用户提交的数据共同组成的。SQL注入指攻击者将恶意的字符串或者语句等信息作为参数输入,服务器在验证这个字段的时候,读取攻击者输入的数据,将其作为正常的值参与SQL语句的查询,如果攻击者输入了一个字符串,在SQL语句执行之后,可能导致删除表等操作,对于一个应用来说,影响是很大的。

策略:
    不相信用户的输入,对输入的内容进行检验,利用正则表达式,长度限制等。
    对于用户输入的单引号和双引号,进行转义处理。
    sql语句不动态拼接,利用参数化或存储过程来做;
    连接数据库时,为每一个程序定义一个账号;
    数据库的敏感信息要加密处理

        

九、暴力破解

       指 使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。理论上来说,只要字典足够庞大,枚举总是能够成功的!

猜你喜欢

转载自blog.csdn.net/guanrongl/article/details/125128198