开发者社区 > 云原生 > Serverless > 正文

请问 http 触发器如果开启签名认证,如果在前端签名呢?我看文档签名需要 secretKey,在前

请问 http 触发器如果开启签名认证,如果在前端签名呢?我看文档签名需要 secretKey,在前端签名岂不是泄漏 secretKey 了吗?

展开
收起
云原生那些事 2023-04-23 10:02:59 333 0
5 条回答
写回答
取消 提交回答
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    在使用函数计算的 HTTP 触发器时,为了提高安全性,可以开启 HTTP 触发器签名认证。签名认证是一种常用的身份验证方式,使用 AccessKey/SecretKey 进行加密签名来验证请求是否合法。

    如果需要在前端进行签名,确实存在泄漏 secretKey 的风险。因为 secretKey 是用于生成签名的关键信息,如果泄漏给了未经授权的用户,他们就可以通过构造恶意请求来伪装成已验证的用户并访问您的内容。

    为了避免这种情况,建议在后端进行签名,即将签名计算的逻辑放在后端服务中完成,并从前端的请求中获取必要的参数进行签名计算。也可以在前端的 SDK 中使用临时密钥(STS Token)生成签名,这样就不需要在前端代码中存储 Secret Key。

    此外,如果您仍然需要在前端签名,请确保使用 HTTPS 协议传输请求,并采取一些其他安全措施来保护密钥,例如使用加密存储等方式。

    2023-04-24 17:00:56
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    开启签名认证是为了保证接口请求的安全性和可信度,防止非法请求或篡改数据。在前端签名确实会存在秘钥泄漏的风险,因为前端的代码是可以被客户端完全访问和查看的。

    为了避免泄漏 secretKey ,建议签名过程在后端进行。前端只需将接口请求的参数传递给后端,由后端进行签名认证。可以将 secretKey 存储在后端环境变量或者配置文件中,不直接暴露在代码中。这样既保证了签名过程的安全性,又不会泄漏秘钥。

    当然,如果您尤其需要在前端进行签名,可以采用一些安全措施,比如将 secretKey 进行加密或者散列后存储在前端,或者使用安全存储技术(如硬件安全模块)来保障秘钥的安全,再在前端进行解密或者还原。但这样会涉及到更加复杂的安全处理,与后端签名相比存在风险更高的可能。

    2023-04-23 18:38:35
    赞同 展开评论 打赏
  • 月移花影,暗香浮动

    HTTP触发器开启签名认证时,一般来说需要提供AK和SK(AccessKey和SecretKey)进行签名认证。AK和SK一般由云服务提供商的IAM服务进行管理分配,不应该在前端泄露。如果在前端签名,将AK和SK暴露给外界是十分危险的,因为其他人获取了这些密钥,就可以冒名访问或使用云服务,从而造成相当的安全风险。

    如果您的前端需要访问需要签名认证的HTTP触发器,建议您使用云服务商提供的接口或SDK,通过客户端签名来实现签名认证。通过这种方式,可以在客户端使用您的AK和SK进行签名认证,同时确保AK和SK不会被泄露出去。

    2023-04-23 14:32:54
    赞同 展开评论 打赏
  • token校验

    2023-04-23 13:38:07
    赞同 展开评论 打赏
  • 可以用 JWT

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-04-23 10:17:24
    赞同 展开评论 打赏

快速交付实现商业价值。

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
阿里文娱大前端技术实践 立即下载
前端代码是怎样智能生成的 立即下载