web安全测试
概念
安全性测试就是对相关应用程序的安全性服务以及安全方面的缺陷进行识别的过程
web应用的安全可能存在的攻击方式
- 认证与授权
- session与cookie
- 文件上传
- sql注入
- xss攻击
- ddos攻击(分布式拒绝服务攻击)
- 敏感信息泄漏
- 暴力破解
认证与授权
- 认证
目前的应用系统往往需要用户使用用户名和密码登陆,从而验证用户身份,身份符合方可使用系统
策略:
- 在用户名和密码出现错误时,不要让错误信息过于详细
- 需要检查是否有业务上要求登陆才可以访问的功能页面,直接可以用yrl访问
- 对于密码要有强度策略要求
- 对于输错密码,要求次数或者时间的限制
- 目前来说图片验证码还是作为省份验证的一个非常有效的手段
- 授权
系统中的用户权限
策略:
- 不同身份的用户应该有不同的权限,不同的短线只能访问他所允许的模块,或者只能进行允许的行为。
- 对于系统的用户拿到一个自己身份所没有的权限url访问的情况,需要有用户权限的检查,不能直接允许访问。
- 对于一个系统的用户权限管理最好是一个人员,最好是管理人员来控制
- 设计系统权限设计越细越好,最好设计到增删改查层面。
seeeion和cookie
都是因为http是无状态的,用于识别用户的手段。
策略
- 就是服务器生成sessionid时最好把ip与sessionid绑定,从而避免被别人冒充
- 因为cookie保存在客户端,对于cookie中的明感信息应该加密保存,避免泄露
- cookie的作用域不要一味的都用,这样会导致范围过大,从而影响产品安全,原则是最小范围
- cookie中不可设计进行系统状态控制的内容,因为cookie保存在客户端,用户有可能篡改。
文件上传
系统中用户通过文件上传,传入非法文件,可能给系统带来危害
策略
- 对于用户上传的文件不可信任,一定要对文件类型进行筛选
- 不能只看扩展名,要看文件本身的类型
- 不要只看前端页面的限制
- 文件上传的时候我们要对文件的大小进行限制
SQL注入
一些用户利用特殊设计的非法内容从而改变程序原本设计的行为。
策略
- 永远别相信用户的输入,我们一定要对输入的内容进行检验,何以利用正特表达式,长度限制。
- 对于用户输入的单引号和双引号,一定要进行转义处理,有很多服务器工具是而已进行设置的。
- sql语句尽可能不让他动态拼接,要么利用参数化,要么利用存储过程来做
- 连接数据库时,尽可能为每一个程序定义一个账号,切勿用管理员账号连接数据库
- 对于数据库中的敏感信息一定要加密处理
- 对于数据库的异常信息,一定要进行包装处理,不要直接暴露给用户
- 对于sql注入方面的问题,一般是有工具可以用,比如常见的有:Burp Suite,AppScan等。
XSS跨站脚本攻击
cross site script 一些用户利用网站的交互功能,输入非法的html或者js代码,从而达到攻击网站的用户的目的
- 反射型跨站
直接返回,不再数据库中存储- 存储型跨站
存入到数据库当中
CSRF跨站请求伪造
与xss共同点:都是攻击用户,不攻击网站
区别:xss利用用户对网站的信任达到对用户攻击的目的;
CSRF是利用网站对用户的信任,达到攻击的目的。
DDOS分布式据库尔服务攻击
在短时间内利用大量访问去攻击网站,去耗尽资源,从而达到不能打让网站的正常用户得到相应的服务。
- SYN异常数据攻击
- TCP变种数据攻击
- UDP变种攻击
- web server攻击
敏感信息泄漏
尽可能的提供较少的系统或者应用信息,包装系统底层信息,防止暴露系统的诸如版本,代码设计
暴力破解
如密码字典