XML文档安全查询的几种方法概述

最简单的就是根据安全策略对结果的XML文档逐个节点遍历,返回有权限查询的结果

另外两种方法

  • 方法一:
    一种是类似数据库的视图方式,首先根据实际数据XML文档或者初始化时定义好XML文档的完整结构,就像定义数据库的物理表一样。对于数据XML文档,可以定义一趟DTD对节点进行约束,比如声明资源名称,权限约束,也可以不这样使用,直接根据现有的XML文档定义下文说的安全策略。对这个数据源XML结构,生成DTD格式或者自定义格式,相当于RDBMS系统中的物理表的结构,也称作物理表。
    然后使用XPATH或者类似CSS Selector的语法定义安全策略,语法规则可能很多条,可能可以根据相互之间的优先级构造一棵树。然后可以根据安全策略中的每个角色(以RBAC,Role Based Access Control模型为例),结合物理表的结构,生成一个视图DTD或者自定义格式,类似于RDBMS中的视图,称作角色视图表。
    在用户查询时,假设是用XPATH查询,或者用户角色或权限后,和上文的角色视图表结合,生成一个临时的视图DTD或者自定义结构,类似于RDBMS中的临时表结构,称作结果视图表。
    最后使用这个结果视图表从数据源中查询数据并返回。

  • 方法二:
    这种方法是在定义安全策略或安全规则后,针对用户查询的XPATH,结合用户的权限和对应的安全规则,重新构造这个查询XPATH,然后使用新的XPATH向数据源查询数据并返回。这种方法同样需要上文中的构造物理表和定义安全规则的步骤。

两种方法孰优孰劣不具体实现也不好说,具体实现也可能会有各种问题,暂时不管。