Skip to content

请求数据加密拦截器 🔐

功能介绍 💡

WARNING

请求数据加密拦截器就像一个解密专家,负责对加密的请求数据进行解密处理。在安全要求较高的系统中,它通过对请求参数进行加密传输来提升系统的整体安全性,有效防止数据在传输过程中被窃取或篡改。

支持的请求格式 📝

  • application/x-www-form-urlencoded - 表单数据
  • application/json - JSON数据
  • url地址 - URL参数传递
  • form-data - 不支持此格式

加密算法说明 🔒

  • 加密方式:3DES(Triple DES)加密算法
  • 加密流程:对象 → JSON字符串 → 3DES加密
  • 传输要求:加密后的数据必须使用 data 参数名传输

详细配置说明 ⚙️

核心参数说明

参数名类型必填默认值说明
enabledbooleanfalse是否启用拦截器
itemsarray-加密规则配置列表

加密规则配置详解 (items)

参数名类型必填说明示例值
urlsarray需要进行解密的URL地址列表/demo/login
secretstring3DES加解密密钥(24字符)D5E5F589769DA629A2F8C344F4749C0A
forbid-urlsarray排除不需要解密的URL地址/demo/public/**
headersobject请求头过滤规则,增加后只有匹配的请求头才可以进入此拦截器,默认为空,全部匹配(v1.5.2+){"appId": ["test","demo"]}

配置示例 📋

基础配置

yaml
wueasy:
  gateway:
    filter:
      request-decrypt:
        enabled: true  # 启用请求解密
        items:
        - urls: /demo/login,/demo/get  # 需要解密的地址
          secret: D5E5F589769DA629A2F8C344F4749C0A  # 解密密钥

高级配置

yaml
wueasy:
  gateway:
    filter:
      request-decrypt:
        enabled: true
        items:
        - urls: /api/**  # 所有API接口
          secret: D5E5F589769DA629A2F8C344F4749C0A
          forbid-urls: /api/public/**  # 排除公开接口
          headers:  # 请求头过滤
            appId:  # 只处理特定应用的请求
            - test
            - demo

请求示例 📝

加密前的数据

json
{
    "username": "admin",
    "password": "123456"
}

加密后的请求

http
POST /demo/login HTTP/1.1
Content-Type: application/json

{
    "data": "U2FsdGVkX1+2tOLqT8HqVJ6Y+6P8v+3/RjMYn+5p+8Q="
}

最佳实践 💡

  1. 密钥管理

    • 使用足够长度和复杂度的密钥
    • 不同环境使用不同的密钥
    • 定期更换密钥
  2. 安全建议

    • 使用HTTPS传输
    • 配合签名验证使用
    • 对敏感接口启用加密
  3. 性能优化

    • 只对必要的接口启用加密
    • 合理设置排除规则
    • 避免对大文件传输使用加密

常见问题 ❓

  1. 解密失败

    • 检查密钥是否正确
    • 验证数据是否使用 data 参数传输
    • 确认加密算法是否匹配
  2. 配置不生效

    • 确认 enabled 是否为 true
    • 检查 URL 是否在配置列表中
    • 验证请求格式是否支持
  3. 性能问题

    • 检查是否对大量数据进行加密
    • 确认是否对高频接口启用了加密
    • 优化加密范围

安全提示 ⚠️

CAUTION

  1. 密钥泄露会导致安全风险,请妥善保管
  2. 建议结合其他安全措施(如签名验证)一起使用
  3. 定期更新密钥,提高系统安全性
  4. 避免在日志中打印解密后的敏感数据

相关文档 📚