在共享点中获取列表项时是否需要设置 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 的代码似乎没有执行更新,只是读取数据,所以不,我认为它不相关。

这仅在更新期间需要。取数据时不需要。