【问题标题】:Appengine ID/Name vs WebSafeKeyAppengine ID/名称与 WebSafeKey
【发布时间】:2015-08-04 13:46:11
【问题描述】:

在 java 中编写端点时,为了通过键查找项目,我应该使用键的 Id 还是 webSafeString?这在什么情况下很重要?

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore


    【解决方案1】:

    这取决于你。

    • 实体有父母吗?那么您可能希望使用urlsafe 表示,因为单个字符串将包含实体的完整路径。如果您改用 ID - 您可能需要手动将所有父母的 ID 包含到根目录。

    • 没有父母和 ID 是数字/字母数字?然后只需使用看起来更干净的 ID(同样,这不是规则,完全取决于您)。

    • 没有父母,但 ID 中有特殊字符?使用urlsafe 表示,因为您可能会遇到无法使用某些特殊字符而不在 HTTP 中对其进行编码的问题。

    • 注意 #1:urlsafe 表示具有可以轻松解码的实体名称编码,这不太可能是隐私问题,但您仍然应该注意它。实际数据 (ID) 也经过简单编码,可以轻松解码,因此在使用电子邮件等个人信息作为 ID 时要小心,urlsafe 不安全。

    • 1234563您可能所做的更改。

    【讨论】:

    • 感谢您的回答!但是如果可以从 websafekey 中解码信息,是否还有另一种更安全的方法来通过键/ID 检索实体?或者是一种使传递给查询的信息更难解码的方法?
    • ID 通常是随机生成的,因此实际上不包含任何敏感信息,因此无需加密它们,但如果您担心您的urlsafes 泄露敏感信息,那么只需在传输之前对其进行加密给用户并在返回时使用只有您的应用知道的密钥进行解密。
    • 写得真棒。你能澄清一下注释#2的意思吗?
    • @MicroR 是的,尽管您提供的密钥似乎有些不完整 - 它仍然只是稍微修改过的 base64 编码(不是加密),任何人都可以轻松解码。注意 #2 我的意思是您的应用程序名称、您的父/子信息 - 都编码在 urlsafe 字符串中,如果将来有任何更改 - 如果您要在 URL 中使用 urlsafes,您可能会遇到断开的链接.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多