Ottenere la
versione della build di SharePoint 2010 è un operazione estremamente semplice,
ma ... ci sono dei ma.
Il metodo
migliore per ottenere la versione è quello di aprire la Central Admin e
nella sezione System Settings accendere alla voce Manage servers in this farm (http://site/_admin/FarmServers.aspx).
Per avere
delle informazioni di dettaglio su tutti i
componenti installati (es. language pack) si può andare su Upgrade and
Migration e selezionalare Check product and path installation status (http://server/_admin/PatchStatus.aspx)
In entrambe
i casi è comunque necessario fare accesso alla Central Admin. Ci sono
alternative?
Se abbiamo accesso al SQL Server che ospita il database della Central Admin e si ha a disposizione SQL Management Studio, questo script TSQL ci restitusce la build number.
SELECT
Version, UserName
FROM
Versions
WHERE
VersionId = '00000000-0000-0000-0000-000000000000'
ORDER BY Id
DESC
Se possiamo
fare girare del codice su server SharePoint si può creare una console application che estrae le stesse infomazioni.
using
(SPSite startSite = new SPSite("")) {
SPFarm farm = startSite.WebApplication.Farm;
SPWebService service =
farm.Services.GetValue("");
foreach (SPWebApplication webApplication in
service.WebApplications) {
foreach (SPSite site in
webApplication.Sites) {
Console.WriteLine(string.Format("{0} - {1}", site.Url,
site.ContentDatabase.Name));
}
}
}
Naturalmente questi metodi devono essere eseguiti con un utente che abbia i diritti appropriati. Se non avessimo questi diritti? Se fossimo abilitati ad accedere ad una site collection con una security più limitata? Per farla ancora più difficile: da un sito di publishing
pubblicato su internet e acceduto in modalità anonima possiamo identificare la
build installata?
La risposta
è sì, ma ... non è detto che il dato ottenuto sia "sempre" affidabile.
Per ottenere la versione si deve analizzare il contenuto delle HttpResponse generate da SharePoint e tra gli header troveremo uno dal nome MicrosoftSharePointTeamServices. Questo header è configurato su IIS da
SharePoint 2010 e mantenuto aggiornato dai vari
aggiornamenti di SP e CU.
Via
Javascript possiamo così scrivere alcune righe di codice per risalire dalla build.
var xmlHttp
= new XMLHttpRequest();
var url =
"http://yoursite";
xmlHttp.open('HEAD',
url, false);
xmlHttp.send();
var
SPVersion =
xmlHttp.getResponseHeader("MicrosoftSharePointTeamServices");
NOTE: talvolta gli
IT Admin considerano che l'esposizione di questo tipo di informazioni possa in
qualche modo 'ledere' la sicurezza della farm. Il ragionamento è
"se chiunque è in grado di ottenere informazioni sul livello di Patch,
la stessa persona potrebbe attaccare la piattaforma sfruttando le vunerabilità
conosciute". Di fatto però la maggior parte dei siti internet ospitati su SharePoint espongono questa informazione ... provare per credere!
UPDATE 15/1: ovviamente anche via Powershell con l'addin di SharePoint 2010 otteniamo la build tramite (Get-SPFarm).BuildVersion



0 comments:
Post a Comment