WSS 代码执行的权限提升

2023-11-16

WSS 代码执行的权限提升

概述:

WSS 默认使用身份模拟执行代码,也就是说用当前登录的用户身份执行Web Part或者自定义应用程序的代码访问。在大多数情况下,这种机制能够准确并严格地控制了标准权限的用户他对特定网站资源和敏感数据的访问,这也是我们想要达到的目标。

然而,有时候在一些特殊的场景,你的代码必须执行wss 对象某些受限制的方法,即便请求者是没有这个权限的用户。那么在这种情况下,我们需要提升普通用户执行代码的权限。

实现方法:

SPSecurity.RunWithElevatedPrivileges(delegate()

{

    // 需要提升权限执行的代码

});

事例:

获取网站集owner 的 名称 SPSite.Owner.Name

默认是需要网站集管理员权限的用户才能得到,如果没有执行代码权限提升,以一个普通用户去执行SPSite.Owner.Name,系统会报一个”拒绝访问”的错误。

然而执行了如下代码,我们普通权限的用户,也可以成功得访问到SPSite.Owner.Name

SPSite siteColl = SPContext.Current.Site;

SPWeb site = SPContext.Current.Web;

SPSecurity.RunWithElevatedPrivileges(delegate() {

using (SPSite ElevatedsiteColl = new SPSite(siteColl.ID)) {

using (SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID))

{

        //以SHAREPOINT"System account 系统帐号身份运行

      string SiteCollectionOwner = ElevatedsiteColl.Owner.Name;    

    }

 }

});

注意:

在使用SPSecurity.RunWithElevatedPrivileges权限提升的代码里头,必须实例化SPSite,SPWeb对象,而不能使用Microsoft.SharePoint.SPContext.Current属性获得对象,因为那些对象是以当前用户的安全上下文创建的

请使用using方式实例化对象,以便系统能自动执行Dispose,完成资源释放。

上面谈到的这种方式是以最高完全权限的系统管理员帐户去执行代码的,当然我们也可以指定运行代码的帐号:

SPSite siteColl = SPContext.Current.Site;

SPWeb site = SPContext.Current.Web;

SPUser user = site.Users[@"litware/ken"];

SPUserToken userToken = user.UserToken;

 

SPSecurity.RunWithElevatedPrivileges(delegate() {

using (SPSite ElevatedsiteColl = new SPSite(siteColl.ID, userToken)) {

using (SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID))

{        //以litware"ken身份运行
      string SiteCollectionOwner = ElevatedsiteColl.Owner.Name;    

    }

 }

});

这种方式的话,代码就以litware"ken 的权限来运行,不管ken 的权限是高还是低。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WSS 代码执行的权限提升 的相关文章

  • C++类成员函数中const的用法

    C 类中 const的用法个人总结主要有以下几种 1 用来修饰成员变量 比如const int var 2 用来修饰形参 主要针对引用 比如const type 3 用来修饰返回值 返回常量引用 4 放在成员函数的形参列表的 之后 大括号
  • 嵌入式是什么?(一个电子产品的从0到1)-杂谈

    这篇博客 我想聊聊嵌入式 在IT行业 存在着很多不同的领域与不同的职位 由此也延伸出了各式各样的工程师 但其中嵌入式工程师算是比较迷糊的一个职位了 即便同是IT的同事也有不少问过我 嵌入式是干什么的 更别说是非IT行业的人以及刚刚入门的小白
  • VPP plugin so 的封装与解耦

    封装与解耦 每一个 plugin 封装了一个独立的功能模块 模块依赖的外部 so 接口也封装在每个 plugin 中 vpp 提供统一的使能 禁能 初始化 plugin 的框架 同时每个 plugin 对外提供的接口也使用统一的方式 大多采
  • python 输入输出相关

    输入字符串 n input 字符串可以直接遍历 输入字符串时遇到需要输出字符串的题 可以再建一个字符串用来更新 比如这道题 输入一个由小写英文字母组成的字符串 请将其中的元音字母 a e i o u 转换成大写 其它字母仍然保持小写 n i
  • FPGA 与门

    module and gate a b y input a b output y assign y a b endmodule
  • [tensorflow]联邦学习框架TFF安装记录(基于docker)

    1 介绍 tensorflow federated 下面简称为TFF 是谷歌开发的一款开源联邦学习框架 该框架基于tensorflow 下面简称为TF 运行 安装这个框架花了我两天时间 现在对安装过程进行总结 本帖子总共分为3章 第一章介绍

随机推荐

  • Linux 查看文件大包括隐藏文件

    du h max depth 1 sort hr
  • 实现Vue的登录页面

    实现Vue的登录页面步骤 1 前期准备 1 1 安装Node js 从官网下载地址 https nodejs org zh cn 安装完成后 在终端输入 node v 来查询版本号 1 2 安装Webpack 在终端输入npm instal
  • 测试servlet的小tips

    由于servlet中使用了一些Request请求中的参数 我们可以通过请求url中添加这些参数 传入到 Request中 一个小tips
  • GTest的测试环境搭建

    一 gtest的安装 Google test是一种比较方便的C 测试框架 它能够帮助我们比较方便的进行测试代码的编写 以及输出尽可能详细的失败信息 能够大大缩短我们测试代码的编写效率 而且该框架的使用方法也比较简单 能够降低我们学习新框架的
  • Java 移除重复节点

    移除重复节点 难度简单97 编写代码 移除未排序链表中的重复节点 保留最开始出现的节点 示例1 输入 1 2 3 3 2 1 输出 1 2 3 示例2 输入 1 1 1 1 2 输出 1 2 提示 链表长度在 0 20000 范围内 链表元
  • MES管理系统对电子企业来说有什么优点

    引言 在电子制造企业中 MES管理系统已经成为提高生产效率 降低成本 提高订单履行速度和准确性的重要工具 电子企业MES管理系统是一套集成的信息系统 用于监控和控制电子企业的生产过程 本文将探讨MES管理系统对于电子企业来说有哪些优点 一
  • 人工智能的最新进展:2024年将会发生什么?

    文章目录 2024年AI最新发展 2024年AI具体应用 2024年AI的具体预测 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 人工智能 AI 是一种快速发展的技术
  • C++ MAP的遍历顺序和插入元素顺序是不同的

    当你为MAP插入一个元素后 MAP会按KEY的顺序重新排列 所以当你遍历MAP的时候 遍历的顺序已经不是你插入元素的顺序 举个具体例子 MAP B 1 MAP C 2 MAP A 3 当你遍历MAP输出的时候 是按 A B C 顺序输出的
  • Zookeeper和Nacos的区别

    目录 Zookeeper 1 ZK结构 2 ZK的消息广播和崩溃恢复 Nacos 1 存储和数据更新 2 注册中心 Zookeeper 1 ZK结构 Zookeeper的功能主要是通过它的树形节点来实现的 当有节点数据变化时或者说节点过期的
  • Dropout Learning - 防止深度神经网络过拟合

    最近在学习caffe 里面有一个名词叫做Dropout Learning 一直没明白是什么意思 直到最近才发现一片文章介绍Dropout Learning的 希望可以给不知道的同学一定的帮助 如果想要更深入的了解可以阅读该文献 文章结尾会给
  • MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处

    mov指令原则 两个操作数 目标操作数和源操作数 的大小必须相同 两个操作数不能同时为内存操作数 也就是不能内存 到 内存 指令指针寄存器不能作为目标操作数 64位汇编程序下 32位汇编程序和64位汇编程序都依照上面的规则 语法也相同 但如
  • 目标跟踪算法

    目标跟踪算法 一 目标跟踪算法简介 1 1 主要任务 1 1 1 Online Visual Tracker BenchMark 1 1 2 VOT 1 2 难点与挑战 1 3 分类 1 3 1 常规分类 1 3 2 时间分类 二 常用算法
  • 从Bengio的NPS模型看AGI的实现通路

    来源 混沌巡洋舰 这两天深度学习祖师Yoshua Bengio 的 Neural Production System 刷新了AI圈子 与以往的深度学习套路不同的是 这篇文章有效的把符号主义AI对人类认知的模拟与深度学习结合 得到了一个能够学
  • 《每日一题》NO.21:画出CMOS 非门/与非门/或非门的结构

    芯司机 每日一题 会每天更新一道IC面试笔试题 其中有些题目已经被很多企业参考采用了哦 聪明的你快来挑战一下吧 今天是第21题 CMOS Complementary Metal Oxide Semiconductor 互补金属氧化物半导体
  • Vivo 2019秋季校园招聘笔试题(9月22号机考)

    Vivo笔试题这次真是出乎意料了 上来就直接三道编程题奉上 题目描述 1 小V在公司负责游戏运营 今天收到一款申请新上架的游戏 跳一跳 为了确保提供给广大玩家朋友们的游戏都是高品质的 按照运营流程小V必须对新游戏进行全方位了解体验和评估 这
  • webpack多个Html,Webpack构建多页面应用配置

    安装依赖 devDependencies babel core 7 12 3 babel preset env 7 12 1 babel preset react 7 12 1 babel loader 8 1 0 clean webpac
  • 一元多项式的相加

    一元多项式的表达和相加 使用单链表表示一元多项式 由于使用java语言自己编写实现 没有使用LinkedList集合实现 所以需要创建单链表的类 类中包含指数 系数和后继元素的地址 类的设计如下 public class SingleLis
  • 01背包问题(采药) 动态规划,python实现

    采药问题 题目描述 辰辰是个天资聪颖的孩子 他的梦想是成为世界上最伟大的医师 为此 他想拜附近最有威望的医师为师 医师为了判断他的资质 给他出了一个难题 医师把他带到一个到处都是草药的山洞里对他说 孩子 这个山洞里有一些不同的草药 采每一株
  • python后端接口框架Flask的基本用法

    简介 在现代Web开发中 后端接口是十分重要的一部分 它们建立了前端和后端之间的连接 使得数据能够在两者之间传递 Python是一门受欢迎的动态编程语言 它可以用来编写高效且功能强大的后端接口 本文将介绍如何使用Python编写后端接口 以
  • WSS 代码执行的权限提升

    WSS 代码执行的权限提升 概述 WSS 默认使用身份模拟执行代码 也就是说用当前登录的用户身份执行Web Part或者自定义应用程序的代码访问 在大多数情况下 这种机制能够准确并严格地控制了标准权限的用户他对特定网站资源和敏感数据的访问