如何保护SharePoint托管的加载项中的SharePoint列表内容?

时间:2016-01-14 12:42:20

标签: sharepoint sharepoint-2013 office365-apps sharepoint-apps

我有以下情况: 我的加载项允许写帖子。任何用户都可以"喜欢"那个帖子。喜欢的东西被保存到列表中。

当然,加载项需要将该条目写入列表的权限。但是(恕我直言)我不能在SharePoint托管的加载项中使用任何提升的权限,用户需要拥有该权限,对吗?

所以:我如何保护我的列表,用户不必进入列表并自行修改价值并增加"喜欢"例如?

(评论:这不是真实世界的情况。我知道有更好的方法可以使用社交网络功能。只是想打破我更复杂的应用程序)

3 个答案:

答案 0 :(得分:0)

我会让每个用户都喜欢'单击在项级权限设置为的列表中创建新项目:

  

创建项目并编辑用户创建的项目

这样即使他们以某种方式进入后端并开始使用列表进行修改,他们也只能更改他们创建的项目。

您只需要根据应用的规模管理列表的增长方式。

答案 1 :(得分:0)

SharePoint托管的加载项无法使用仅限应用程序策略,因为提供程序托管的加载项可以使用具有用户拥有的更多权限的加载项上下文。 SharePoint托管的加载项完全在当前用户的上下文中运行。

我看到了3种可能的解决方案:

  1. 重新设计加载项以供应商托管)
  2. 实施自定义Web服务并从您的加载项调用此Web服务。该Web服务可以将敏感信息存储在自定义数据库或具有自定义权限的应用程序Web中的列表中。但请记住,SP管理员可以修改这些权限。
  3. 将半敏感信息存储到项目的扩展属性中。没有UI允许用户使用它进行操作,但这并不像权限那样安全。这样做的好处是,此信息直接连接到“受影响”项目,您无需担心项目和类似存储之间的连接丢失。缺点是扩展属性只能包含有限数量的数据,用户必须具有更新项目的权限。您也可以将此方法与您的列表结合使用。

答案 2 :(得分:0)

你是对的。用户需要“Contribute”权限才能完成您所说的内容。就个人而言,这就是我要做的......

1)确保我要保护的列表名称不明确。请记住,UI与主机Web中的不同(即站点内容)。用户永远不必知道这些数据存储在哪个列表中。更进一步,列表之间的联系可以通过诸如GUID之类的东西来实现,而不是像“标题”那样明显的东西,这使得确定数据的确切关联变得更加困难。

https://sharepoint.stackexchange.com/questions/96360/hide-list-from-browser-site-lists-lisname

2)删除敏感列表中的所有视图。这会阻止浏览器中的导航。这些列表将通过REST或CSOM进行修改,因此您不需要它们。

3)我没有测试过这种可能的解决方案,但它可能有效。你应该能够配置edit.aspx(或创建你自己的自定义),这样即使用户以某种方式使它超过了步骤1和2,也没有可用的字段可以编辑......

这些方法以任何方式操纵列表的权限,最后,所有这些都是通过默默无闻的权限。