WSS 代码执行的权限提升

原创 2008年05月24日 13:38:00

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 的权限是高还是低。

JEECG_3.7 权限开发讲解

系统性讲解jeecg权限设计、真实案例讲解各权限规则使用方法
  • 2018年03月27日 21:38

权限控制

在许多的实际应用中,不只是要求用户简单地进行注册登录,还要求不同类别的用户对资源有不同的操作权限。目前,权限管理系统也是重复开发率最高的模块之一。  目 录 [ - ] 楼主关...
  • qq_33863843
  • qq_33863843
  • 2016-12-02 12:55:26
  • 2482

最大可上传文件限制为120MB,总量为1GB的网络U盘

我已经在用了,感觉不错,不过好像不能同时传多个文件,只能一个一个的传。可以私有,可以共享。速度还可以。网址是: www.putfwd.comhttp://IKE.126.COM当然是免费的,不然,我也...
  • metababy
  • metababy
  • 2006-03-08 09:14:00
  • 2463

【技术分享】CVE-2016-6662:Mysql远程代码执行/权限提升技术分析正式版(9/13 10:47更新)

【技术分享】CVE-2016-6662:Mysql远程代码执行/权限提升技术分析正式版(9/13 10:47更新) 作者:苦逼司马(凌晨四点收到投稿,...
  • qq_27446553
  • qq_27446553
  • 2016-09-14 08:49:44
  • 2067

OpenSSH 曝远程代码执行漏洞,尽快升级

导读 12月19日,国外漏洞平台 securityfocus上发布了最新的 OpenSSH(CVE-2016-10009)远程代码执行漏洞。由于问题出在ssh-agent,这个进程默认不启动、只...
  • looper66
  • looper66
  • 2016-12-23 17:55:45
  • 2068

记录一个在SharePoint的代码中提升运行权限的方法

方法: SPSecurity.RunWithElevatedPrivileges命名空间: Microsoft.SharePoint程序集: Microsoft.SharePoint (i...
  • yefengmeander
  • yefengmeander
  • 2010-09-30 15:50:00
  • 1111

CVE-2016-6662,研究人员披露 关键MySQL 0day漏洞

安全研究员Dawid Golunski揭露了一个影响流行的数据库管理系统(RDBMS)MySQL的关键性0day。研究人员决定披露关键漏洞,因为甲Oracle在研究人员报告0day漏洞40天后也没有没...
  • nani1114
  • nani1114
  • 2016-09-14 10:35:55
  • 1349

Mysql本地提权及远程代码执行漏洞浅析(CVE-2016-6662)

0x00 漏洞影响mysql 5.5、5.6、5.7 在10月份更新前的所有版本,包括分支版本MariaDB和PerconaDB 。0x01 利用途径通过远程数据库连接,web接口如phpMyAdmi...
  • yanghuan313
  • yanghuan313
  • 2016-10-17 20:05:05
  • 644

一个提升代码执行权限的例子

    同事在测试工具在Vista下运行的时候,无意中发现工具报了一个调用"msflxgrd.ocx"出错。因为ocx是控件,如果在运行前不注册的话,有可能该控件无法使用。于是我在Vista上尝试手工...
  • bengold1979
  • bengold1979
  • 2008-08-07 17:46:00
  • 842

为编写的Windows程序提升权限

1.要求以管理员身份运行     在vs工程属性中,Linker ---> Manifest File---> UAC Execution Level,选择requireAdministrator ...
  • tobacco5648
  • tobacco5648
  • 2014-05-21 11:09:27
  • 21743
收藏助手
不良信息举报
您举报文章:WSS 代码执行的权限提升
举报原因:
原因补充:

(最多只允许输入30个字)