Skip to content
On this page
检查分类检查项校验说明检查人修复责任人测试等级测试方法
登录弱口令"1 设置安全的密码策略,应该满足8位及以上长度 2 必须含大小写字母、数字、(特殊字符) 3 对系统已存在的弱密码定期提醒修改推送"测试后端1
密码存储"1、用户密码信息使用加密存储(禁止明文存储) 2、加密方式使用不可逆的算法(使用增加盐值、Hash等不可逆加密算法)"测试后端2
多因子认证"采用多因素认证, 用户名+密码+短信验证码 用户名+密码+图片验证码 用户名+密码+动态口令 用户名+密码+面部识别 浙里办/浙政钉/钉钉/微信扫码登录"测试后端2
验证码绕过"1 前端限制验证码必填 2 后端逻辑必须验证验证码是否正确"测试前端、后端2"1 验证前端是否必填 2 验证后端是否做校验 --1) burpsuite截取抓包, --2) -a尝试将验证码值置空,再放包到服务端 --2) -b尝试想验证码字段删除,再方包到服务端"
密码找回"1、系统必须具备用户账号密码找回功能 2、账号密码找回进行用户身份识别(手机短信/邮箱/人脸识别)"测试产品、前端、后端3
密码修改修改操作需要通过手机短信或者邮箱进行身份验证测试产品、前端、后端3
密码明文传输"1 密码传输使用了https 2 接口中,密码不允许明文传输,前端必须对密码加密处理"测试前端2
错误提示安全地处理失败的身份校验,如使用"用户名或密码错误"来提示失败,防止泄露过多信息测试前端、后端2"漏洞示例: 1 不存在的用户,提示“用户不存在,请先注册"" 2 存在的用户,但密码输入错误,提示“密码错误”"
异常处理"1 登录入口应具有防止暴力或撞库猜解,超过1次验证失败自动启用图形验证码; 2超过多次验证失败自动启用账户锁定机制限制其访问,如3分钟20次登录失败,锁定失败账户30分钟。"测试后端2
身份认证身份标识"1 登录后,后续所有接口必须附加身份标识 2 用户身份标识不允许长期有效,建议有效期不超过6小时"测试后端1
认证接口返回"1 返回的身份标识(如token等)必须为无规律不可预测的字符串 2 返回信息中不可包含用户个人敏感信息"测试后端1
身份令牌含敏感信息token经过解析后,不可包含用户名、手机号等敏感信息测试后端2可通过在线JWT Token解码,检查token中是否含有敏感信息,如:https://tooltt.com/jwt-decode/
短信验证验证码生成复杂度至少6位数字或字母,一次一用,建议有效期不超过5分钟测试后端3
验证码限制前后端设置用户获取频率为60秒一次测试前端、后端2
短信接口返回禁止在响应中返回验证码测试后端1
授权未授权访问未经授权,访问接口或页面,直接返回了应该登录后才能查看的数据测试后端1通过在线接口管理平台如YApi获取接口地址,批量尝试不带用户认证发送请求是否返回200 / 40X
授权url访问不应该将授权认证放在url中,导致登录后获取到url后续操作就跳过认证测试前端2
水平越权风险未经授权,用户A不能访问用户B的信息资源。测试后端2"以无纸化会议系统为例: 1 设定一场B参加而A未参加的会议X。 2 抓取B查看会议X详情的接口 3 将B的token换成A的,重新发送请求,是否能看到会议X的详情"
垂直越权越权风险未经授权,低权限用户不可获得高权限。测试后端2"以人大系统管理员和普通工作人员为例: 1 抓取管理员添加用户的接口 2 将token替换为工作人员的,重新发送请求,能否成功新增用户"
分级授权缺失风险应用系统可以对账号配置不同权限测试后端3
CSRF跨站请求伪造Token使用(可选)在重要操作的表单中增加会话生成的Token字段一次一用,提交后在服务端校验该字段测试前端、后端2 or 3
二次验证(可选)在关键表单(如修改密码)提交时,要求用户进行二次身份验证如密码、图片验证码、短信验证码等测试前端、后端2 or 3
Referer验证检验用户请求中 Referer:字段是否存在跨域提交的情况测试后端1"1 首先确定当前被测试平台的认证方式是cookie还是token,若是token认证,一般认为csrf漏洞风险低,可不再测试该项 2 如果是cookie认证,需要尝试修改Referer,然后重新发送请求,如果任然能获得修改前一样的响应则说明有CSRF漏洞"
跨站脚本攻击(XSS)输入校验及编码"1 对输入的数据进行过滤和转义,包含但不限于<,>,',"",/等危险特殊字符 2 对输出到页面的数据进行相应的编码转换,包括HTML实体编码、属性以及URL请求参数"测试前端1"1 找到可以在前端页面展示文本信息或列表信息的输入位置 2 输入<img src=## on error=alert('xss')>,(markdown禁止出现敏感脚本关键字,实际测试时请将on error连接)并保存 3 在文本或列表展示页面,查看页面上是否出现弹窗"
cookie设置为HttpOnly设置cookie的HttpOnly属性,防止cookie被恶意攻击者盗取测试后端2打开浏览器开发者工具,查看cookie属性
SQL注入注入拦截"用户的输入进入应用程序的SQL操作前,对输入进行合法性校验。 用参数化查询方法对敏感字符如""进行转义,然后再进行SQL操作。 "测试后端1"python sqlmap.py -t E:\scan-results.txt -u ""https://2b26a8e0aeda23c8.zhijiasoft.com/admin/enterprise/page?param1=aaa&param2=bbb &param3=ccc"" --headers ""Authorization:xxxxxxxxxxxxxxxxxxxxx"" --dbms=MySQL --level=2 --risk=1 -o --batch --current-db"
敏感数据加密敏感信息都采用了加密、哈希或混淆等方式进行保密存储,降低漏洞带来的数据泄露风险测试/后端2
禁止错误回显禁止系统开启 Debug模式或异常时返回包含敏感信息的提示,建议使用自定义的错误信息模板,异常信息应存放在日志中用于安全审计后端3
文件上传合法性校验"1 进行文件上传时,在服务端对文件合法性校验,白名单形式检查文档类型,不允许出现不限制文件类型的文件上传接口(使用文件类型白名单,只允许常见的文档、图片、音视频格式的文件上传) 2 文件上传必须有大小限制,必要时图片也应该限制长宽/像素(可选)"测试前端、后端1"1 检查前端是否限制白名单内文件才能上传 2 检查后端是否限制白名单:浏览器禁用js,再尝试上传白名单外的文件 3 将文件后缀名为合法,然后在抓包后在报文中恢复文件原本后缀名 --1)将不合法文件如.html后缀名修改为合法如.jpg --2)burp拦截抓包,将filename的后缀回复为html,放包验证是否可上传成功"
上传文件重命名进行文件保存时,成功上传的文件需要进行随机化重命名测试后端2找到此文件上传后,可下载或查看的位置。在接口响应中查看文件是否随机重命名
存储环境设置保存的目录权限应设置为不可执行运维运维2
文件加密文件下载禁止无用户身份标识通过URL直接下载/打开文件测试后端2通过接口响应中的文件名或URL测试是否需要认证才能下载
文件加密前后端必须有配套的加密/解密方法,下载的文件需经过前端解密才能阅读测试前端、后端2
敏感文件泄露.git和.DS_store防止.git和.DS_store文件及相关目录未经授权可访问或下载测试前端、后端1使用dirsearch工具扫描并检查响应状态码
tar、zip等备份泄露防止源码和重要信息备份文件被公开下载测试前端、后端1使用dirsearch扫描并下载查看内容
swagger防止swagger接口调试工具信息泄露测试后端1使用swagger未授权扫描工具进行扫描
数据脱敏数据展示脱敏敏感数据在列表页面展示时需部分隐藏测试前端2
数据加密存储敏感信息采用加密、哈希或混淆等方式存储后端3
信息发送信息审查短信、邮件、站内信等功能需要有审查过程测试产品、前端、后端1
服务隔离测试环境和预发布环境禁止对接短信、邮件发送服务后端运维1
应用发布APP发包加固发布给客户的APP需经过加固处理前端前端1
行为日志行为审计日志模块权限控制和记录完整性测试前端、后端2
环境漏洞开放未在使用的端口关闭未在使用的端口运维/测试使用Nmap进行主机扫描
环境漏洞Prometheus服务未授权做好访问控制,不允许未授权访问运维/测试
环境漏洞OpenSSH安全漏洞定期扫描并修复OpenSSH安全漏洞运维
环境漏洞web server安全漏洞定期扫描并修复web server(如nginx)安全漏洞运维
环境漏洞数据库安全漏洞定期扫描并修复数据库安全漏洞运维
环境漏洞操作系统漏洞定期扫描并修复操作系统漏洞运维
账户安全数据库账户数据库账号密码满足复杂度要求,并定期更新运维
账户安全操作系统账户操作系统账号密码满足复杂度要求,并定期更新运维

智加文档规范