Simptome
Kada instalirate sledeće bezbednosne ispravke iz oktobra za Microsoft SharePoint Server, neki Microsoft SharePoint 2010 toka posla mogu biti blokirani. Pored toga, oznake događaja "6ksbk" evidentiraju se u SharePoint evidencijama sistema objedinjenog evidentiranja (ULS).
-
Opis bezbednosne ispravke za SharePoint Foundation 2013: 11. oktobar 2022. (KB5002284)
-
Opis bezbednosne ispravke za SharePoint Enterprise Server 2016: 11. oktobar 2022. (KB5002287)
-
Opis bezbednosne ispravke za SharePoint Server 2019: 11. oktobar 2022. (KB5002278)
-
Opis bezbednosne ispravke za SharePoint Server izdanje za pretplatu: 11. oktobar 2022. (KB5002290)
Izazvati
Da bi ojačao bezbednost SharePoint tokova posla, SharePoint sada podržava samo UTF-8 kodiranje znakova za .xoml datoteke toka posla.
Napomena: SharePoint alatke toka posla kao što su SharePoint Designer, Microsoft Visual Studio i Nintex podrazumevano kreiraju tok posla .xoml datoteke pomoću UTF-8 kodiranja znakova. Ovo poboljšanje bezbednosti neće uticati na klijente osim ako su ručno uredili .xoml datoteke toka posla i konvertovali ih u drugačije kodiranje znakova. Ovaj problem je dokumentovan u ovom članku baze znanja o izuzetno retkoj mogućnosti da su klijenti možda odabrali da to rade.
Zaobilazno rešenje
Ako ste ručno uredili .xoml datoteku toka posla i konvertovali je u kodiranje znakova koje nije UTF-8, moraćete ponovo da uredite datoteku da biste je konvertovali u UTF-8. Uverite se da XML deklaracija datoteke definiše šifrovanje kao UTF-8, sačuvajte datoteku u UTF-8 formatu kodiranje znakova pomoću uređivača teksta, a zatim je ponovo primenite.
Sledeća PowerShell skripta može da se koristi u programu SharePoint Management Shell za skeniranje .xoml datoteka toka posla u SharePoint kolekciji lokacija kako bi se utvrdilo da li ova promena utiče na njih. Izlaz IsGoodWorkflow će biti True za .xoml datoteke toka posla koje koriste UTF-8 kodiranje znakova i koje su kompatibilne sa ovom prognopom. Izlaz IsGoodWorkflow će biti False za .xoml datoteke toka posla koje ne koriste UTF-8 kodiranje znakova i moraju da se izmene.
<#
.SYNOPSIS
Script to check character encoding of workflow .xoml files found in a site collection.
.DESCRIPTION
This script checks the character encoding of workflow .xoml files found in a site collection based
on the security improvement documented here: https://support.microsoft.com/topic/sharepoint-2010-workflows-might-be-blocked-by-enhanced-security-policy-kb5020238-eb91e24d-eea4-4490-a281-86503adc8b27
This could be altered to take an SPWebApplication object, iterate through all SPSite objects in the Sites SPSiteCollection,
and then iterate through all SPWeb subsites in the AllWebs SPWebCollection.
.EXAMPLE
Get-WorkflowStatusForSite -SiteCollectionUrl https://sharepoint
.EXAMPLE
Get-WorkflowStatusForSite -SiteCollectionUrl https://sharepoint -IgnoreSubSites
.INPUTS
None
.OUTPUTS
PSCustomObject with Site, Web, WorkflowFileName and IsGoodWorkflow Result
Site Web WorkflowFileName IsGoodWorkflow
---- --- ---------------- --------------
SPSite Url=http://sharepoint http://sharepoint/WorkflowTest 2010 Log Workflow.xoml True
SPSite Url=http://sharepoint http://sharepoint/WorkflowTest Another Test Log.xoml True
.NOTES
Version .1
#>
param(
[Parameter(Position=2,HelpMessage="The site collection URL to validate.")]
[string]$SiteCollectionUrl,
[Parameter(Position=3,HelpMessage="Ignore subsites below the top-level site in the site collection.")]
[switch]$IgnoreSubSites
)
function IsGoodWorkflow
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[System.Xml.XmlReader]$xmlReader
)
try {
$xDoc = [System.Xml.Linq.XDocument]::Load($xmlReader)
if ($null -ne $xDoc -and $null -ne $xDoc.Declaration -and $null -ne $xDoc.Declaration.Encoding)
{
if ($xdoc.Declaration.Encoding.ToLower() -ne "utf-8")
{
return $false
}
}
}
catch
{
return $false
}
return $true
}
function CheckWorkflowFile
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[Microsoft.SharePoint.SPFile]$SPFile
)
$xmlReader = [System.Xml.XmlReader]::Create($SPFile.OpenBinaryStream())
if ($null -ne $xmlReader)
{
$isGood = $xmlReader | IsGoodWorkflow
$xmlReader.Close()
$xmlReader.Dispose()
return [PSCustomObject]@{
Site = $SPFile.Item.Web.Site
Web = $SPFile.Item.Web.Url
WorkflowFileName = $SPFile.Name
IsGoodWorkflow = $isGood
}
}
}
function CheckWorkflowsForWeb
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[Microsoft.SharePoint.SPWeb]$SPWeb
)
write-host "Checking $SPweb"
$WorkflowsList = $SPWeb.Lists["Workflows"]
$results = @()
if ($WorkflowsList)
{
Write-Host "Found: " $WorkflowsList.Title
foreach ($listItem in $WorkflowsList.Items)
{
if ($listItem.File -and $listItem.File.Name.ToLower().EndsWith(".xoml"))
{
Write-Host "Found Workflow: " $listItem.File.Name
$results += (CheckWorkflowFile $listItem.File)
}
}
}
return $results
}
function CheckWorkflowsForSite
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[Microsoft.SharePoint.SPSite]$SPSite,
[switch]$IgnoreSubSites
)
$results = @()
if ($IgnoreSubSites)
{
$SPWeb = $SPSite.RootWeb
$results += CheckWorkflowsForWeb $SPWeb
$SPWeb.Dispose()
}
else
{
foreach ($SPWeb in $SPSite.AllWebs)
{
$results += CheckWorkflowsForWeb $SPWeb
$SPWeb.Dispose()
}
}
return $results
}
if ([string]::IsNullOrEmpty($SiteCollectionUrl))
{
$SiteCollectionUrl = Read-Host "Please provide a site collection URL (Default: http://sharepoint)"
if ([String]::IsNullOrEmpty($SiteCollectionUrl))
{
$SiteCollectionUrl = "http://sharepoint"
}
}
$SPSite = Get-SPSite $SiteCollectionUrl -ErrorAction SilentlyContinue
if ($null -eq $SPSite)
{
Write-Host "Site collection $SiteCollectionUrl not found." -ForegroundColor Red
return;
}
$results = CheckWorkflowsForSite $SPSite
# Dispose of the Site
$SPSite.Dispose()
# Results can be exported to a CSV or manipulated
$results
Istorija promena
Sledeća tabela rezimira neke od najvažnijih promena ove teme.
Datum |
Opis |
---|---|
22. novembar 2022. |
Dodao je belešku u odeljak "Uzrok" i ažurirao odeljak "Privremeno rešenje" PowerShell skriptom radi skeniranja .xoml datoteka toka posla. |