安全性测试
安全性测试其实就是针对应用软件提供的安全性服务进行验证,或者识别其安全性缺陷的过程。
Web安全的常见攻击方式
* 认证与授权
* session与cookie
* 文件上传
* SQL注入
* XSS攻击
* DDOS攻击
* 由于错误引起的敏感信息泄露
* 暴力破解
1 认证与授权
认证
在进行用户身份认证时,对于用户名或密码错误不要提示的过于精确
对于需要一定身份才能访问的页面,必须要进行身份验证,不能直接用户输入url就允许该页面打开
对于密码要有密码强度策略
对于登录失败要有安全策略
对于登录最好加入图片验证码,目前来说图片验证码还是一个成本较低,安全性较高的手段
授权
不同身份的用户对于不同的模块和功能要有不同的权限
对于有权限的功能模块,不可以通过url在不辨识权限的情况下就允许随便访问
系统的权限管理就应该只能由管理员一个人来设定,其他任何用户都不应该有权限
对于系统的权限最好细化到数据的增删改查这个程度,细化到模块,细化到具体操作。对于具体操作一定要有日志记录。
2 session与cookie
对于session在生成的时候最好和用户请求的ip地址进行绑定,并且还可以加入时间,从而让session能够只在一个有效期内有效
因为cookie存在于客户端,所以对于cookie中的敏感信息最好进行加密保存,防止信息泄露
针对cookie其有效的作用域原则上应该是越小越好,不要一味的path都用/,这样会导致该域名下同一个虚拟目录的所有项目该cookie全部生效。
对于cookie不要在其中放置和系统控制相关的键值对,避免因人篡改导致的安全问题
3 文件上传
首先对于上传文件的类型需要检查,对于上传的内容可以利用正则表达式验证,也可以利用长度进行限制
对于文件的类型检查不能仅仅依赖于文件扩展名。
不能仅仅只是在前端进行检查,还需要后端也要进行相应的检查
需要对用户上传的文件size进行检查
对于用户连接后不停的传数据的行为也要进行检查
4 SQL注入
select first_name, surname from userinfo where id = [ ]
1 or 1 = 1
select first_name, surname from userinfo where id = '[ ]'
1’ or ‘1’ = ‘1
select first_name, surname from userinfor where id = '[ ]' limit 1
1’ or ‘1’ = ‘1’#
select first_name, surname from userinfor where id = '[1' or '1' = '1' union select table_name, table_schema from information_schema.tables where table_schema = 'woniusales'#]' limit 1
select first_name, surname from userinfor where id = '[1' or '1' = '1' union select column_name, table_schema from information_schema.columns where table_schema = 'woniusales' and table_name = 'user'#]' limit 1
select first_name, surname from userinfor where id = '[1' or '1' = '1' union select username, password from woniusales.user#]' limit 1
永远不要相信用户的输入,对于用户的输入要通过正则表达式验证,并且对内容的长度进行限制
对于用户输入的单引号或双引号都要进行转义处理
对于sql永远不要去动态拼接,要用sql的参数化,或者存储过程的方式来去做
对于敏感数据一定要进行加密
对于项目的数据库连接一定不能使用超级管理员权限去连接
对于sql的错误一定要封装,不要轻易暴露
对于sql注入方面的问题,可以通过Burp suite,app scan这样一些工具来进行扫描
5 跨站脚本攻击XSS(cross site script)
攻击对象与前面的攻击方式不同,XXS攻击的不是web服务器提供商,而是web服务的用户,利用网络的各种交互管道,向服务器提交攻击者编写的恶意html、js代码,利用服务用户的浏览器来执行这些代码,从而达到攻击这些用户的目的。
*反射型跨站Reflected XSS
对于发送给服务器的请求参数不做保存直接返回给用户显示,常见于钓鱼
*存储型跨站Stored xss
发送给服务器的恶意数据不加过滤的保存在数据库中,在有请求读取数据的时候,就会在用户端的浏览器中执行,常见于挂马
跨站请求伪造CSRF
XSS和CSRF共同点是两者攻击都是web服务的用户,他们都不直接攻击web服务本身。
两者的区别:
XXS利用了用户对于网站信任的心理;CSRF请求伪造利用了网站对用户的信息。
6 DDOS分布式拒绝服务攻击
*SYN变种攻击
*tcp变种攻击
*udp变种攻击
*针对web服务器的多连接攻击
7 利用错误信息获取敏感数据
要去对产品的任何开发细节,包含运行的系统,运行软件,运行工具,运行环境,相应的
安全测试
最新推荐文章于 2024-05-26 01:55:08 发布