
1) 【一句话结论】针对铁路客票系统API,需结合系统通信协议(如HTTPS)、认证机制(如JWT),从参数注入、认证绕过、权限提升三个维度设计测试用例,通过构造符合业务约束的恶意请求并验证实际业务影响(如数据篡改、权限变更),全面评估安全风险。
2) 【原理/概念讲解】
3) 【对比与适用场景】
| 测试方法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 参数注入 | 对API输入参数注入恶意代码(如SQL注入、路径参数篡改) | 需识别输入点,构造符合参数约束的payload(如日期格式、车次编码规则) | 查询类(车票查询)、修改类(订单修改)、管理类(用户信息查询) | 区分参数类型:路径参数直接嵌入URL(如/api/tickets/123),查询参数在URL后(如?date=2024-05-01),请求体参数在JSON/表单中;构造payload时需考虑边界条件(如路径参数长度限制,假设6位,构造无效但注入语句)。 |
| 认证绕过 | 通过弱密码策略(如密码复杂度低)、会话管理缺陷(如会话ID可预测)绕过认证 | 依赖认证逻辑缺陷,需模拟真实用户行为或会话劫持 | 登录接口、用户认证接口 | 需明确认证机制(如JWT、Session),构造弱密码(如123456)或预测会话ID(如连续数字)。 |
| 权限提升 | 利用角色模型缺陷(如“普通用户”访问“管理员”接口)或业务逻辑漏洞获取越权 | 需分析角色关系、业务流程,模拟权限链攻击 | 管理员接口、敏感操作接口(订单删除、用户信息修改) | 需明确角色权限矩阵,构造请求时携带较低权限用户的认证信息,验证是否执行高权限操作。 |
4) 【示例】以车票查询接口为例,路径参数train_id(6位数字字母编码,如“CRH123”),构造恶意路径参数:
GET /api/tickets/query/{train_id}?date=2024-05-01/api/tickets/query/123' OR '1'='1(假设train_id为6位,构造无效但注入语句),发送请求。5) 【面试口播版答案】
“面试官您好,针对铁路客票系统的API接口,我设计的测试用例主要围绕参数注入、认证绕过和权限提升三个方向。首先,参数注入方面,比如针对车票查询接口的路径参数train_id(假设为6位数字字母编码),我会构造SQL注入payload(如123' OR '1'='1),通过发送恶意请求验证系统是否对参数进行有效过滤,比如是否返回数据库错误或异常数据。其次,认证绕过方面,我会测试登录接口是否存在弱密码策略(如密码复杂度低),或者会话管理缺陷(如会话ID可预测),通过模拟弱密码登录或会话劫持来验证是否绕过认证。然后,权限提升方面,我会分析角色模型,比如“普通用户”是否可以访问“管理员”的订单删除接口,通过构造请求验证是否成功执行管理员权限的操作。验证结果主要通过观察响应状态码(如401/403异常)、响应内容(如错误信息、权限提升后的操作结果)以及实际业务影响(如是否篡改了车票信息)来判断。总结来说,这套测试用例结合了铁路系统的特殊业务逻辑(如车次编码、日期约束),并考虑了API通信协议(HTTPS)和认证机制(如JWT),能全面覆盖关键漏洞点。”
6) 【追问清单】
7) 【常见坑/雷区】