eXist DB为REST/PUT请求配置安全性



我的网站上有一个简单的联系表单,它成功地向我的eXist数据库发出了HTTP PUT

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

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

HTTP PUT配置为公共写入而非读取/编辑的最佳做法是什么?

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

是否还有其他考虑因素?

有没有一种具体的、推荐的eXistdb方法?

提前谢谢。

所以您有几个选项:

  1. 使用Collection权限,例如owner/group/mode/acl,并使用在HTTP PUT中经过身份验证的用户或组来控制谁可以写入Collection。

    集合的模式rwx

    1. r(读取)允许用户/组列出集合的内容
    2. w(写入)允许用户/组写入集合;请注意包括删除文档
    3. x(execute)允许用户/组打开集合,如果没有"x",则不允许使用rw

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

  2. 相反,您可能希望一个公共用户对通过REST API或RESTXQ端点公开的XQuery主模块具有s(set-uid+execute)访问权限。当通过HTTPPUT访问此主模块时,它将假定一个有效的用户id,并写入Collection。HTTP PUT’ing到XQuery主模块而不是集合的优点:

    1. 您可以使用XQuery主模块忽略HTTP DELETE/POST/GET等,这可以防止用户直接修改Collection
    2. 您不需要在eXist数据库之外共享您的特权用户的凭据
    3. XQuery主模块是特定于任务的,因此具有更小的攻击服务,并充当有限的访问控制点

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

最新更新