【问题标题】:How to encrypt the query parameters values in rest api url如何加密rest api url中的查询参数值
【发布时间】:2017-07-21 10:35:39
【问题描述】:

我们创建了示例 Web api 并托管在 azure 中。我们有很多 get 和 Post 方法。我们必须通过API获得响应,通过传递一些敏感数据,如SSN等。我们觉得第三方可以查看查询参数值。那么 SSL 可以解决问题吗?或者有什么方法可以简单地解决它?

【问题讨论】:

  • SSL/TLS 当然可以降低第三方读取您信息的风险,但请注意,在查询字符串中传递敏感信息总是一个坏主意。查询字符串将在浏览器中可见,可以缓存,可以存储在日志中等。这些都是安全问题。
  • 使用 SSL/TLS 加密通信,但在 http 消息正文中发送敏感数据,而不是 URL/查询字符串。
  • TLS 1.2 已经支持 128 位和 256 位 AES。只需启用 HTTPS 并将其配置为使用更强大的算法
  • 检查these instructions,了解如何在 Azure 上禁用低于 TLS 1.2 的任何内容并使用特定的密码算法

标签: c# asp.net ssl asp.net-web-api restful-url


【解决方案1】:

既然您已经拥有 HTTPS (HTTP+SSL),为什么还要实施新的解决方案。请求正文默认加密。您可以禁用较弱的密码套件,只允许使用较高的 TLS 版本。在执行此操作时,您可能还需要考虑客户端兼容性,因为并非所有客户端都支持所有 密码套件TLS 协议版本。

您可以通过禁用其他 SSL/TLS 协议版本为客户端强制实施 TLS 1.2。与其前身相比,它的实现更加严格。你可以在这里阅读:Major Differences from TLS 1.1

您尚未提及您的 Web api 是否托管在 Azure VM/云服务/Azure 应用服务上。您无法在 Azure 应用服务中控制服务器上的 TLS/SSL 配置。

注意:启用 HTTPS 或实施加密并不保证是万无一失的解决方案。您应该确保机密信息被安全地存储,并且正如@Panagiotis 所指出的,您还必须确保您没有在服务器/应用程序日志中存储任何敏感信息。 安全性是一个更广泛的概念,HTTPS解决了其中一项要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    相关资源
    最近更新 更多