【问题标题】:Authentication using Using DIrectMail SDK?使用 DIrectMail SDK 进行身份验证?
【发布时间】:2019-01-05 13:15:03
【问题描述】:

我想直接在分布的客户端应用程序中使用 Direct Mail SDK(Java)。在应用程序中验证用户的方式,我需要提供如下访问密钥,

IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<your accessKey>", "<your accessSecret>");

我怎样才能防止用户知道访问密钥并仍然防止需要第三方 API?有可能吗?

【问题讨论】:

    标签: alibaba-cloud


    【解决方案1】:

    首先,编写需要在客户端上运行的机密的应用程序是一种不好的做法。您应该管理服务器上的所有内容并提供与客户端软件交互的 API。

    其次,一旦传递给客户端,就无法隐藏这些凭据。您可以加密凭据,但有时客户端应用程序需要解密它们。即使是业余程序员也能弄清楚你是如何处理你的凭据的。

    忽略上述建议,阿里云支持提供临时访问密钥的 STS。使用您的阿里巴巴凭据,您将调用 AssumeRole,它创建临时访问密钥,授予用户权限调用 DirectMail。您可以限制凭据有效的时间。范围是 900 到 3600 秒。在这段时间之后,密钥将失效。

    请记住,900 秒是很长的时间。访问这些密钥的不良行为者可能会使用您的帐户发送数千封电子邮件。因此实施强用户身份验证、STS 和临时访问密钥。

    如果您认为仅将界面保密就足够了,请不要这样做。互联网上有数以百万计的脚本小子在戳每个 IP 地址。启动一个新的 ECS 实例,您将在数小时内看到攻击。

    【讨论】:

      【解决方案2】:

      正如你所说,因为它是一个 Java Web 应用程序(假设),目前我想到了使用类似于 JBOSS Vault 的东西来安全地存储访问密钥。

      如果它是一些独立的客户端应用程序,您仍然可以使用一些加密方法来存储数据。但这只会阻止轻松访问数据/密钥。但这并非不可能。最好的办法是创建另一个第三方 API

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多