Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GAE应用程序命名空间的安全使用_Python_Google App Engine_Namespaces - Fatal编程技术网

Python GAE应用程序命名空间的安全使用

Python GAE应用程序命名空间的安全使用,python,google-app-engine,namespaces,Python,Google App Engine,Namespaces,我希望将用户映射到帐户,然后将用户定向到与其帐户对应的命名空间 从中查看之后,似乎有一些建议的方法可以确定名称空间应该是什么,即 服务器名 谷歌应用程序域 饼干 我希望根据数据存储中的查找选择名称空间。i、 e namespace = user.account.name 对于链接到帐户的某些用户对象,哪个帐户具有名称字段。我提出了几种方法来实现这一点: 对每个请求进行数据存储查找 每个请求的memcache查找(memcache过期时回退到数据存储) 安全cookie数据 数据存储查找速度会慢

我希望将用户映射到帐户,然后将用户定向到与其帐户对应的命名空间

从中查看之后,似乎有一些建议的方法可以确定名称空间应该是什么,即

  • 服务器名
  • 谷歌应用程序域
  • 饼干
  • 我希望根据数据存储中的查找选择名称空间。i、 e

    namespace = user.account.name
    
    对于链接到
    帐户
    的某些
    用户
    对象,哪个帐户具有
    名称
    字段。我提出了几种方法来实现这一点:

  • 对每个请求进行数据存储查找
  • 每个请求的memcache查找(memcache过期时回退到数据存储)
  • 安全cookie数据
  • 数据存储查找速度会慢两步。memcache查找是否有此类预订?e、 g.
    memcache.get('nslookup:%s'%user\u id)
    ,给定
    用户id
    。(我相信该对象在
    appengine\u config.py
    中可以按预期工作)

    或者,可以使用安全cookie来解决此问题。我对“安全”标志(即强制SSL)的安全性不满意。但是,我不确定如何最好地保护cookie中的数据。我认为在GAE中使用密钥并使用PyCrypto进行对称签名是开始这条路径的一种方法。尽管这种模式一直存在,但我非常感谢您对这一建议解决方案的任何想法

    从理想的角度来看,安全的cookies似乎不是最好的途径;我已经期望拥有用户身份,我所需要的只是从用户到他们帐户的映射-没有逻辑基础来加密、发送、存储、接收和解密每个请求的映射。memcache选项似乎是三个选项中最好的一个,但我非常感谢您的想法和意见。我能想到的使用安全cookie的唯一原因是性能,或者如果在
    appengine\u config.py
    中没有memcache访问权限

    非常欢迎对我的假设提出想法、意见和挑战

    谢谢你的阅读


    Brian

    我认为安全的cookies是一条出路,因为它们足够快。这里是从Tornado中提取的一个基本实现(您只需要SecureCookie类,可以忽略“会话”内容):


    就性能而言,任何避免对每个请求进行memcache或数据存储查找的方法都将是最佳选择。但是,您混淆了“安全”cookie的两个定义:cookie规范中的“安全”标志要求cookie仅通过SSL发送,而从另一个意义上说,“安全”cookie是用户无法检测到的修改,这在本用例中是最重要的


    不过,不需要加密内容——您希望防止修改,而不是泄露——因此,如果您无法使用现有库,您只需使用嵌入到应用程序中的密钥将cookie的HMAC附加到库的末尾即可。在每个请求上验证HMAC将比使用memcache快得多。

    在数据存储中查找记录时使用什么?那个记录在哪个命名空间中?另外,您是否确定每个用户只需要访问自己的数据?如果用户通常读取或写入其他用户可以访问的数据,则每个用户的名称空间可能不是最好的选择。@尼克·约翰逊:我还没有决定使用什么来查找数据存储中的记录(假设它会在那里,我想它会在那里);它必须位于“主”命名空间中。名称空间不是每个用户,而是每个帐户(即用户集)。跨帐户访问将由代理请求处理。我的观点是,如果您有办法构造一个键来查找数据存储中的记录,您可以简单地使用该值作为名称空间名称,而不是进行查找。至于“代理请求”,我希望您不是指使用urlfetch向自己发出请求——您只需更改请求中的默认名称空间即可!谢谢你的回复。我当然认为安全cookies是实现这一点的标准方法。