在共享点中获取列表项时是否需要设置 allowunsafeupdates 属性?
Does allowunsafeupdates property need to be set while a list item is fetched in sharepoint?
我是 Sharepoint 2010 项目的新手。当我检查代码时,在许多地方我发现 SPWeb.AllowUnsafeUpdates 属性 设置为 true,即使列表的任何元素都没有更新。有一些列表数据获取。在任何列表中都没有更新以使用 AllowUnsafeUpdates 设置为 true 时,这是否相关?
SPWeb thisWeb = workflowProperties.Web;
thisWeb.AllowUnsafeUpdates = true;
SPList EmployeeDetails = thisWeb.Lists[BasicEmployeeDetailsList];
SPList list = workflowProperties.Web.Lists[workflowProperties.List.ID];
SPListItem compensatoryLeaveItem = workflowProperties.Item;
DataTable creatermail = new DataTable();
editurl = workflowProperties.SiteUrl.ToString() + list.DefaultEditFormUrl + "?ID=" + compensatoryLeaveItem["ID"].ToString() + "&Popup=false";
string EmployeeDetailsID = compensatoryLeaveItem["Created By"].ToString().Substring(compensatoryLeaveItem["Created By"].ToString().IndexOf('#') + 1);
string listQuery = "<Where><Eq><FieldRef Name='LoginName' /><Value Type='User'>" + EmployeeDetailsID + "</Value></Eq></Where>";
SPQuery query = new SPQuery();
query.Query = listQuery;
SPListItemCollection createrCol = EmployeeDetails.GetItems(query);
creatermail = createrCol.GetDataTable();
createdbymail = creatermail.Rows[0][FieldMail].ToString();
creater = creatermail.Rows[0][FieldFullName].ToString();
GetHrDetails(thisWeb);
thisWeb.AllowUnsafeUpdates = false;
如果确实没有发生更新,那么据我所知,没有必要设置 SPWeb.AllowUnsafeUpdates = true
。要了解此 属性 的作用,我们可以引用 MSDN documentation:
Gets or sets a Boolean value that specifies whether to allow updates to the database as a result of a GET request or without requiring a security validation.
进一步:
Setting this property to true opens security risks, potentially introducing cross-site scripting vulnerabilities.
所以这是为了保护您的 SharePoint 网站而设计的。您应该尽量不要因为 GET 请求或没有安全验证而更新您的 SharePoint 网站。您可能会发现这个更详细的解释对 Hristo Pavlov's blog 很有用。当我试图理解它时,我做到了。
您 post 的代码似乎没有执行更新,只是读取数据,所以不,我认为它不相关。
这仅在更新期间需要。取数据时不需要。
我是 Sharepoint 2010 项目的新手。当我检查代码时,在许多地方我发现 SPWeb.AllowUnsafeUpdates 属性 设置为 true,即使列表的任何元素都没有更新。有一些列表数据获取。在任何列表中都没有更新以使用 AllowUnsafeUpdates 设置为 true 时,这是否相关?
SPWeb thisWeb = workflowProperties.Web;
thisWeb.AllowUnsafeUpdates = true;
SPList EmployeeDetails = thisWeb.Lists[BasicEmployeeDetailsList];
SPList list = workflowProperties.Web.Lists[workflowProperties.List.ID];
SPListItem compensatoryLeaveItem = workflowProperties.Item;
DataTable creatermail = new DataTable();
editurl = workflowProperties.SiteUrl.ToString() + list.DefaultEditFormUrl + "?ID=" + compensatoryLeaveItem["ID"].ToString() + "&Popup=false";
string EmployeeDetailsID = compensatoryLeaveItem["Created By"].ToString().Substring(compensatoryLeaveItem["Created By"].ToString().IndexOf('#') + 1);
string listQuery = "<Where><Eq><FieldRef Name='LoginName' /><Value Type='User'>" + EmployeeDetailsID + "</Value></Eq></Where>";
SPQuery query = new SPQuery();
query.Query = listQuery;
SPListItemCollection createrCol = EmployeeDetails.GetItems(query);
creatermail = createrCol.GetDataTable();
createdbymail = creatermail.Rows[0][FieldMail].ToString();
creater = creatermail.Rows[0][FieldFullName].ToString();
GetHrDetails(thisWeb);
thisWeb.AllowUnsafeUpdates = false;
如果确实没有发生更新,那么据我所知,没有必要设置 SPWeb.AllowUnsafeUpdates = true
。要了解此 属性 的作用,我们可以引用 MSDN documentation:
Gets or sets a Boolean value that specifies whether to allow updates to the database as a result of a GET request or without requiring a security validation.
进一步:
Setting this property to true opens security risks, potentially introducing cross-site scripting vulnerabilities.
所以这是为了保护您的 SharePoint 网站而设计的。您应该尽量不要因为 GET 请求或没有安全验证而更新您的 SharePoint 网站。您可能会发现这个更详细的解释对 Hristo Pavlov's blog 很有用。当我试图理解它时,我做到了。
您 post 的代码似乎没有执行更新,只是读取数据,所以不,我认为它不相关。
这仅在更新期间需要。取数据时不需要。