Hyperledger Composer-如果参与者在acl中具有UPDATE权限,如何防止他们更改资源的某些属性



我在hyperledger composer中编码了一个文章提交系统,该系统基本上应该允许"作者"类型的参与者创建一个应由审阅者审阅的"文章"资产(另一个"作者"属性isReview=true)。

问题是,根据ACL的逻辑,作者可以更改他们的数据,这包括决定他们是否是评审员的属性。这是不应该被允许的,因为作者只有在成功发表文章时才成为评论家。

我的问题是,我是否需要在hyperledger的javascript逻辑中以某种方式限制这一点,或者如果我可以在客户端应用程序中屏蔽它,如果它可以在客户端上完成,黑客会利用这个"缺口"吗?

我知道我可以在客户端应用程序中做到这一点,但我不知道这种方法的含义,因为由于安全问题,系统应该全部在后端工作。

.cto

participant Author identified by email {
o String authorId optional
o String email
o String firstName
o String lastName
o Boolean isReviewer default=false
o Double points default=0.0
o Double reputation default=0.0
}

.acl

rule AuthorCanUpdateData {
description: "Allow all author access to all resources"
participant(m): "org.dasp.net.Author"
operation: ALL
resource(v): "org.dasp.net.Author"
condition: (v.getIdentifier() == m.getIdentifier())
action: ALLOW
}

我希望能够确定参与者可以更改或不更改哪个特征属性。但我没有找到任何这些,只是阅读、更新、创建和所有

Hyperledger Composer没有"属性级"授权控制,它主要控制哪些参与者对业务网络中的哪些资源(类、实例等)有限制。

因此,对于所问的问题:如果你需要属性级别的控制(并且"作者"通过客户端应用程序访问商业网络),那么是的,你应该实现客户端。通常的安全架构问题适用于此(对不起,我无法帮助您谁应该从客户端访问您的业务网络,哪些组织/对等方需要认可交易等)。

至于商业网络中的限制,简而言之,问题似乎是:"我能阻止未发表的作者特别更改他们的isReviewer状态吗?">

是的,你可以通过在这种情况下维护一个单独的状态资产列表来限制:

participant Author identified by email {
o String email
o String authorId optional
o String firstName
o String lastName
o Double points default=0.0
o Double reputation default=0.0

}

asset Authorship identified by authorId {
o String authorId 
o Boolean isReviewer default=false
}

那么当你在资源级别工作时,你的ACL(现有的)会起作用("作者可以编辑自己的个人资料"),你的客户可以检查审查者状态(如果这是它目前正在做的事情,即某人是否有权审查)。

相关内容

最新更新