原文:http://msdn2.microsoft.com/en-us/library/bb466220.aspx

在SharePoint中,正常情况下我们在WebPart或后台自定义应用程序中的代码都是以当前用户的身份和权限运行。在绝大多数情况下,这样做是正确的,也是我们期望的。这可以阻止一般用户执行一些本来是站点管理员才能执行的操作,或者查看到不应该看到的信息。然而,有时我们的代码必须要执行一些SharePoint对象模型中对某些用户有限制的方法,即使该请求是由一个没有该操作权限的人发起的。这时,我们必须能够在代码中提升权限,使得该操作被允许在Web服务器上执行。
 
假设我们有一个WebPart要显示一些通过SharePoint对象模型得到的信息,如:当前站点集所有者的名称,使用率统计数据,或审核信息等。调用这些对象模型都是需要站点管理权限才可以。如果当前用户不是站点管理员的话,该WebPart试图获取这类信息时就就会报一个拒绝访问的错误。实际上,我们可以通过调用SPSecurity类的RunWithElevatedPrivileges方法成功的执行上面提到的这些调用。
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)) {
      string SiteCollectionOwner = ElevatedsiteColl.Owner.Name;
      string Visits = ElevatedsiteColl.Usage.Visits.ToString();
      string RootAuditEntries =
          ElevatedSite.RootFolder.Audit.GetEntries().Count.ToString();
    }
  }
});

RunWithElevatedPrivileges方法通过接受一个委托(delegate)参数, 来添加一个需权限提升后执行的方法的引用。在C#中,正如上面的代码展示的那样,可以使用一个匿名方法来编写委托参数,直接写在另一个方法内部就行。

当我们通过调用RunWithElevatedPrivileges提升在SharePoint上下文中的权限后,我们必须接着创建一个SPSite和SPWeb类的实例。切记不能通过Microsoft.SharePoint.SPContext.Current属性来获取这些对象。因为这些对象都是通过当前用户的安全上下文创建的。上面的代码展示了一种很好的方法来在权限提升后得到这些对象。另外这样写还可以保证在Using语句外这些对象可以通过调用Dispose方法很好的被释放。

最后,我们要注意,这种方式获取的权限是很强大的。事实上,提升后的操作是在SharePoint系统帐户下运行。该帐户对于当前服务器场内所有网站集都具有完全控制的权限。因此,在使用提升权限时我们有义务保证不能让用户访问到不该访问的信息或执行一些其本来没有权限执行的操作。

转载于:https://www.cnblogs.com/xiaokangufo/archive/2010/01/25/1656181.html

wss代码执行的权限提升相关推荐

  1. WSS 代码执行的权限提升

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

  2. MOSS中代码运行的权限提升(半摘)

    摘自:http://www.cnblogs.com/netcai/archive/2008/09/11/1288897.html 在编写WebPart或EventHandler时,当前登录网站的是一个 ...

  3. 提升权限_Azure权限提升漏洞

    默认情况下,Azure订阅用户可以访问订阅中的所有存储账户.这些存储账户中包含的Azure Cloud Shell存储文件(Linux主目录)中可能会含有敏感信息.通过修改这些Cloud Shell文 ...

  4. 漏洞复现----37、Apache Unomi 远程代码执行漏洞 (CVE-2020-13942)

    文章目录 一.Apache Unomi简介 二.CVE-2020-11975漏洞 2.1.CVE-2020-11975漏洞代码 2.2.CVE-2020-11975漏洞修复代码 三.CVE-2020- ...

  5. 【burpsuite安全练兵场-服务端7】访问控制漏洞和权限提升-11个实验(全)

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  6. cve-2016-6662 mysql远程代码执行/权限提升 漏洞

    I. VULNERABILITY MySQL <= 5.7.15 远程代码执行/权限提升 (0day) 5.6.33 5.5.52 克隆mysql的同样受影响, 包括: MariaDB Perc ...

  7. 华硕、技嘉驱动程序曝权限提升、代码执行漏洞

    据外媒BleepingComputer报道,来自华硕(ASUS)和技嘉(GIGABYTE)的四个驱动程序均存在多个漏洞,而攻击者可以利用这些漏洞来提升权限,以及执行任意代码. 报道称,共有7个影响到5 ...

  8. 众至科技:漏洞通告 | 微软10月发布多个安全漏洞;Apache Shiro权限绕过漏洞;Apache Commons存在代码执行漏洞

    微软发布10月多个安全漏洞 1.漏洞概述 2022年10月11日,微软发布了10月安全更新,此次更新修复了包括2个0 day漏洞在内的84个安全漏洞(不包括10月3日修复的12个Microsoft   ...

  9. Js代码执行 变量的值 运算 变量提升

    Js代码执行 Js代码执行前,浏览器会给他(js)一个全局环境,叫window(全局作用域).在window下浏览器找到所有的带var和function的关键字然后给他们分配内存地址.不管你赋值没赋值 ...

最新文章

  1. etcd — Overview
  2. python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...
  3. 【杭州云栖】飞天技术汇大视频专场:全民视频时代下的创新技术之路
  4. c语言年历表程序设计,c语言程序设计年历显示-20210413153548.docx-原创力文档
  5. python迭代器与生成器_python的迭代器与生成器实例详解
  6. HttpClient简单请求和返回样例
  7. 简述AI技术的工程部署
  8. 15. 从远程库克隆
  9. html5中怎么实现外边框中嵌入字_Web前端有什么优点?Web前端怎么入门?
  10. 信息集成项目管理工程师 学习资料_如何备考系统集成项目管理工程师?
  11. (6)微信运动点赞(下)-JsDroid引流脚本混合式开发技术系列教程By飞云脚本学院
  12. mysql where clause is ambiguous_mysql …in where clause is ambiguous
  13. 超市选址c语言程序,谈谈超市选址的重要性
  14. windows许可证即将过期 win10的解决办法
  15. php m403n安装错误,HP LaserJet M403n驱动
  16. java 设计模式:软件设计原则、面向对象理论、23 种设计模式
  17. iOS UIFont 字体名字大全
  18. 护眼灯色温和显色指数哪个重要?台灯显色和色温的关系是什么
  19. 计算机图形学 (二) 图元的属性 - 概念、轮廓
  20. 编译器和解释器,预编译和预处理

热门文章

  1. java mina长连接短连接_MINA实现TCP长连接(四)——断开重连
  2. c语言双分支结构运算符,c语言——运算符、分支结构、循环结构
  3. python3 os模块
  4. Object.create()方法
  5. 4 计算机系统的异步性,计算机操作系统的最基本特征是什么
  6. mysql 哨兵模式_Redis讲解主从复制和哨兵模式
  7. 【opencv】4.初始化Mat的方式、访问cv::Mat中的某个元素
  8. 【Linux】2.Linux source命令
  9. Spring学习总结——Spring实现AOP的多种方式
  10. Java快速扫盲指南