到目前为止,在我的研究中,我已经看到在GET请求操作上设置AllowUnsafeUpdates是不明智的,以避免跨站点脚本.但是,如果要求允许这样做,处理这种情况以减轻任何暴露的正确方法是什么?
如果您绝对需要在GET请求上允许Web或站点更新,这是我对可靠模式的最佳猜测.
最佳实践?
protected override void OnLoad(System.EventArgs e)
{
if(Request.HttpMethod == "POST")
{
SPUtility.ValidateFormDigest();
// will automatically set AllowSafeUpdates to true
}
// If not a POST then AllowUnsafeUpdates should be used only
// at the point of update and reset immediately after finished
// NOTE: Is this true? How is cross-site scripting used on GET
// and what mitigates the vulnerability?
}
// Point of item update
using(SPSite site = new SPSite(SPContext.Current.Site.Url, SPContext.Current.Site.SystemAccount.UserToken))
{
using (SPWeb web = site.RootWeb) …Run Code Online (Sandbox Code Playgroud) 我希望有人可以帮助我.我需要从SPContext获取当前站点的根网站.通过以下方式轻松完成
SPContext.Current.Site.RootWeb
Run Code Online (Sandbox Code Playgroud)
我对SPConite.Current中SPSite对象的想法很满意.站点 .RootWeb不应该被处理掉,但是我从SPSite得到的SPWeb对象呢.当SPSite得到处置时,rootweb SPWeb会被处理掉吗?或者我需要自己处理它?
SPSite.Exists(url)虽然网址存在,但有人知道为什么返回false.
如果我检查上面的语句,它返回false.
但如果我直接使用,我可以毫无问题地打开网站
SPSite myRootSite = new SPSite(url);
Run Code Online (Sandbox Code Playgroud)
这是我的编码.
if (SPSite.Exists(new Uri(url)))
{
SPSite myRootSite = new SPSite(url);
}
Run Code Online (Sandbox Code Playgroud)
更新:
抱歉,我是从我的某个业务层调用SharePoint,这是不允许的.
我的错 !!
我所拥有的场景是在SPJobDefinition的Execute方法中我想要遍历Web应用程序中的每个SPSite.所以我有以下代码:
foreach (SPSite site in this.WebApplication.Sites)
{
...
}
Run Code Online (Sandbox Code Playgroud)
问题是,我是否需要处理每个站点?我通常会遵循的规则只有在我自己新建的情况下才会处理或放入使用中.该Sites属性是否实际上包含完全构造的站点对象,我将在此代码中仅引用该对象.如果是这样,那么处理网站将是危险的,因为我正在修改另一个可能需要它们的对象.或者相反的是Sites属性是否根据请求构造对象..在这种情况下,我处理它们的可行性是什么?
如果我确实需要这样做,我该如何处理它们.在这种情况下我不能使用using,并且会在foreach中调用一个dispose来打破枚举?
有谁可以解释SP.Web和SP.Site实体之间的区别?据我所知,SP.Site包含不同的SP.Webs,代表SiteCollections.这是对的吗?您能否分享一下链接以更好地理解这种方法?
我正在尝试为sharepoint搜索创建一个spsite对象,但由于找不到网站,我在生产中遇到异常
SPSite site = new SPSite("sitename");
ServerContext scon = ServerContext.GetContext(site);
SearchContext srchcontext = SearchContext.GetContext(scon);
Scopes sc = new Scopes(srchcontext);
Run Code Online (Sandbox Code Playgroud)
它抛出异常网站未找到我已检查它exixts网站的名称.
任何帮助?
我想在我的网络应用程序下列出所有网站集; 目的是列出用户创建的所有mysite.
像那样:
/members/sites/sqladmin
/members/sites/sqluser
/members/sites/sqluser1
/members/sites/sqluser2
/members/sites/user1
Run Code Online (Sandbox Code Playgroud)