代码之家  ›  专栏  ›  技术社区  ›  jbrehr

exist db为rest/put请求配置安全性

  •  1
  • jbrehr  · 技术社区  · 6 年前

    我的网站上有一个简单的联系人表单,它成功地发布了一个 HTTP PUT 我的存在数据库。

    PUT 创建唯一的XML文档,如下所示: http://medieval-inquisition.huma-num.fr/exist/rest/db/apps/deheresi/comm/some_unique_name.xml

    当它这样做时,服务器需要密码。

    配置的最佳实践是什么 HTTP放置 用于公共写入,但不用于读取/编辑?

    这仅仅是为这个只允许对这个集合进行写访问的REST活动创建一个唯一的用户/密码的问题吗?

    还有其他考虑吗?

    有没有一个具体的,推荐的现有数据库方法?

    事先谢谢。

    1 回复  |  直到 6 年前
        1
  •  3
  •   adamretter    6 年前

    所以你有几个选择:

    1. 使用收集权限,例如owner/group/mode/acl,并使用一个用户或组,该用户或组在http put中经过身份验证,以控制谁可以写入收集。

      模式 rwx 对于集合:

      1. r (读)允许用户/组列出集合的内容
      2. w (写入)允许用户/组写入集合;请注意 包括删除文档!
      3. x (Execute)允许用户/组打开集合,不使用“x”,两者都不 R W 将被允许。

      但是,由于集合是通过HTTP REST API公开的,除非禁用REST API,否则您可能不想给公共用户 W 访问您的收藏。因为他们可以只通过HTTP删除集合中的文档。

    2. 相反,你可能想要一个公共用户 s (set uid+execute)对通过RESTAPI或RESTXQ端点公开的XQuery主模块的访问。当通过HTTP PUT访问此主模块时,它将假定一个有效的用户ID,并写入集合。HTTP的高级标记放在XQuery主模块而不是集合中:

      1. 可以使用xquery主模块忽略http delete/post/get等,这会阻止用户直接修改集合。
      2. 您不需要在现有数据库之外共享特权用户的凭据。
      3. XQuery主模块变得特定于任务,因此具有更小的攻击服务,并且充当访问控制的限制点。

      在XQuery主模块中,您还可能希望对正在创建的文档设置特定的权限。