【问题标题】:How to use API Keys in a website (ie Cognitive services) without disclosing keys?如何在网站(即认知服务)中使用 API 密钥而不泄露密钥?
【发布时间】:2017-06-27 20:40:30
【问题描述】:

Web 端上下文中的 API 密钥永远不会受到保护,如果 API 服务是付费的,这可能是一个大问题。如何在 Azure 认知服务上下文中解决这个问题?

【问题讨论】:

    标签: microsoft-cognitive


    【解决方案1】:

    我假设您指的是不将密钥暴露给浏览您网站的最终用户,而不是保护网络服务器本身上的密钥免受服务器上其他管理员的侵害。

    这并不是一个真正的认知服务问题,而是一个通用问题,适用于您在托管网站(或创建移动应用程序,或任何使用某种密钥或密码的应用程序)时想要保留的任何秘密。

    简短的回答是,不要将密钥提供给客户端,这意味着客户端无法直接调用认知服务,并且您必须在进行调用的 Web 服务器上运行代码。

    通常你会做以下两件事之一:

    1. 在您的网络服务器上运行的代码会调用 Cognitive,然后通过网页处理并显示相关结果给用户。
    2. 您的 Web 服务器将公开一个 API,然后您将让客户端脚本调用您的 API。您的 API 将在内部调用认知服务 API 并返回客户端脚本处理和显示结果的数据。

    您还可以在 How to protect an API Key when using JavaScript? 找到类似的信息,或在网络上搜索“web development protection protection api keys javascript”之类的内容。

    【讨论】:

    • 是的,但是在认知服务的上下文中,使用 API 密钥在客户端打开 Web 套接字,使用中间服务器意味着提供足够的服务器资源来承担负载,如从 webclient 直接连接到 Azure 的情况下,负载只是 azure 承担的一次。
    • 是的,如果您需要保护您的密钥,这是一种权衡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2022-01-12
    • 2017-09-01
    相关资源
    最近更新 更多