支付卡 REST API 安全 Top 5 风险测试用例

admin 2025年4月11日10:38:10评论6 views字数 3700阅读12分20秒阅读模式

支付卡 REST API 安全 Top 5 风险测试用例

TOP5 具体测试用例,包括:

  1. 授权和认证绕过测试
  2. 速率限制和资源消耗测试
  3. 数据验证和注入测试
  4. 敏感数据暴露测试
  5. 功能级别RBAC测试

1. 授权和认证绕过测试

测试案例1:篡改JWT令牌

  • 「请求示例」

    POST/api/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer eyJhbGciOiJIUzI1NiIsIn
    R5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm
    FtZSI6IkpvaGFuIjoiMTIzNDU2Nzg5MCIsImV4cCI6MTY
    yNzYzNDQwMH0.55G3ZxR5EjJfF1sQ7YK3ZxR5EjJfF1sQ
    7YK3ZxR5EjJfF1sQ7YK3ZxR5EjJfF1sQ7YK3
    Content-Type:application/json
    {
    "cardNumber":"4111111111111111",
    "expiryDate":"2025-12",
    "cvv":"123",
    "amount":100
    }
  • 「篡改后的JWT」:将签名部分替换为无效签名。

    Authorization:Bearer eyJhbGciOiJIUzI1Ni
    IsInR5cCI6IkpXVCJ9eyJzdWIiOiIxMjM0NTY3ODkw
    IiwibmFtZSI6IkpvaGFuIjoiMTIzNDU2Nzg5MCIsIm
    V4cCI6MTYyNzYzNDQwMH0.invalid_signature
  • 「预期结果」:API应返回401 Unauthorized,并拒绝处理支付请求。

  • 「成功标准」:API拒绝了篡改的JWT令牌,并返回了适当的错误信息。

测试案例2:省略认证头

  • 「请求示例」

    POST/api/paymentsHTTP/1.1
    Host:api.example.com
    Content-Type:application/json
    {
    "cardNumber":"4111111111111111",
    "expiryDate":"2025-12",
    "cvv":"123",
    "amount":100
    }
  • 「预期结果」:API应返回401 Unauthorized,并拒绝处理支付请求。

  • 「成功标准」:API拒绝了未认证的请求,并返回了适当的错误信息。

2. 速率限制和资源消耗测试

测试目标

验证API是否能够防止速率限制绕过和资源耗尽攻击。

测试案例1:高并发请求

  • 「测试方法」:使用工具(如JMeter)发送大量并发请求。

  • 「请求示例」

    POST/api/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer <valid_token>
    Content-Type:application/json
    {
    "cardNumber":"4111111111111111",
    "expiryDate":"2025-12",
    "cvv":"123",
    "amount":100
    }
  • 「预期结果」:API应在达到速率限制后返回429 Too Many Requests,并停止处理后续请求。

  • 「成功标准」:API正确实施了速率限制,并返回了适当的错误信息。

测试案例2:资源耗尽

  • 「测试方法」:发送大量无效请求,尝试耗尽服务器资源。

  • 「请求示例」

    POST/api/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer <invalid_token>
    Content-Type:application/json
    {
    "cardNumber":"4111111111111111",
    "expiryDate":"2025-12",
    "cvv":"123",
    "amount":100
    }
  • 「预期结果」:API应在检测到资源耗尽时返回503 Service Unavailable,并限制后续请求。

  • 「成功标准」:API能够检测并防御资源耗尽攻击。

3. 数据验证和注入测试

测试目标

验证API是否能够防止数据验证绕过和注入攻击。

测试案例1:SQL注入

  • 「请求示例」

    POST/api/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer <valid_token>
    Content-Type:application/json
    {
    "cardNumber": "4111111111111111';
       DROP TABLE payments;--",
    "expiryDate":"2025-12",
    "cvv":"123",
    "amount":100
    }
  • 「预期结果」:API应返回400 Bad Request,并拒绝处理支付请求。

  • 「成功标准」:API正确识别并阻止了SQL注入攻击。

测试案例2:NoSQL注入

  • 「请求示例」

    POST/api/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer <valid_token>
    Content-Type:application/json
    {
    "cardNumber":"{ $gt: '' }",
    "expiryDate":"2025-12",
    "cvv":"123",
    "amount":100
    }
  • 「预期结果」:API应返回400 Bad Request,并拒绝处理支付请求。

  • 「成功标准」:API正确识别并阻止了NoSQL注入攻击。

4. 敏感数据暴露测试

测试目标

验证API是否能够防止敏感数据暴露。

测试案例1:响应数据泄露

  • 「请求示例」

    GET/api/payments/123HTTP/1.1
    Host:api.example.com
    Authorization:Bearer <valid_token>
  • 「预期结果」:API返回的响应中不应包含完整的支付卡号,仅显示最后4位数字。

  • 「成功标准」:API正确屏蔽了敏感数据,仅显示部分信息。

测试案例2:传输层安全

  • 「测试方法」:使用未加密的HTTP请求访问API。

  • 「请求示例」

    POSThttp://api.ex.com/api/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer <valid_token>
    Content-Type:application/json
    {
    "cardNumber":"4111111111111111",
    "expiryDate":"2025-12",
    "cvv":"123",
    "amount":100
    }
  • 「预期结果」:API应拒绝未加密的请求,并返回400 Bad Request。

  • 「成功标准」:API强制使用HTTPS,并拒绝HTTP请求。

5. 功能级别RBAC测试

测试目标

验证API是否正确实现了基于角色的访问控制(RBAC)。

测试案例1:管理员角色访问

  • 「请求示例」

    GET/api/admin/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer <admin_token>
  • 「预期结果」:API返回200 OK,并显示所有支付记录。

  • 「成功标准」:管理员角色能够访问所有支付记录。

测试案例2:普通用户角色访问

  • 「请求示例」

    GET/api/admin/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer <user_token>
  • 「预期结果」:API返回403 Forbidden,并拒绝访问。

  • 「成功标准」:普通用户角色无法访问管理员功能。

测试案例3:角色提升攻击

  • 「请求示例」

    POST/api/paymentsHTTP/1.1
    Host:api.example.com
    Authorization:Bearer <user_token>
    Content-Type:application/json
    {
    "cardNumber":"4111111111111111",
    "expiryDate":"2025-12",
    "cvv":"123",
    "amount":100
    }
  • 「篡改后的JWT」:将用户角色从“user”篡改为“admin”。

    Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR
    5cCI6IkpXVCJ9eyJyb2xlIjoiYWRtaW4iLCJzdWIiOiIxM
    jM0NTY3ODkwIiwibmFtZSI6IkpvaGFuIjoiMTIzNDU2Nzg
    5MCIsImV4cCI6MTYyNzYzNDQwMH055G3ZxR5EjJfF1sQ7YK
    3ZxR5EjJfF1sQ7YK3ZxR5EjJfF1sQ7YK3ZxR5EjJfF1sQ7YK3
  • 「预期结果」:API返回403 Forbidden,并拒绝处理支付请求。

  • 「成功标准」:API正确识别了篡改的JWT角色,并拒绝了请求。

原文始发于微信公众号(BurpSuite实战教程):支付卡 REST API 安全 Top 5 风险测试用例

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月11日10:38:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   支付卡 REST API 安全 Top 5 风险测试用例https://cn-sec.com/archives/3942942.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息