Condividi tramite


Elenco di controllo di accettazione del codice di esempio per organizzazioni IT

I siti Web basati su Microsoft Office SharePoint Server 2007 spesso includono soluzioni personalizzate. La possibilità di aggiungere ai siti soluzioni personalizzate migliora la potenza e la flessibilità di Microsoft Office SharePoint Server 2007. Un modulo eseguibile con una progettazione o un'implementazione inadeguata eseguito in una farm di SharePoint può tuttavia causare danni anche al di fuori dell'ambito dell'applicazione Web a cui è destinato. Le soluzioni personalizzate con un'implementazione inadeguata possono introdurre rischi a livello di protezione o prestazioni, aumentare i costi di supporto, rendere più difficoltosa la distribuzione e ridurre la produttività.

Poiché l'impatto dell'installazione di soluzioni personalizzate in una server farm di SharePoint può essere sia positivo che negativo, è consigliabile valutare con attenzione tutte le soluzioni personalizzate prima di distribuirle nell'ambiente di produzione. Tra le aree da valutare vi sono le seguenti:

Oltre a richiedere che la soluzione venga sviluppata in conformità con le procedure consigliate generali, è consigliabile far predisporre dagli sviluppatori un elenco di controllo per verificare che le soluzioni siano state codificate e testate conformemente alle procedure consigliate.

Per essere certi che le soluzioni distribuite offrano i vantaggi previsti senza esporre l'organizzazione a rischi inutili, è possibile utilizzare l'elenco di controllo di accettazione del codice di esempio riportato di seguito. Utilizzare questo elenco come punto di partenza per creare un proprio elenco di controllo che consenta di verificare la qualità delle soluzioni inviate per la distribuzione. Oltre a fungere da controllo dopo che è stata sviluppata una soluzione, l'elenco di controllo di accettazione del codice può essere utilizzato come valido strumento di formazione. Fornendo l'elenco agli sviluppatori prima che implementino le personalizzazioni, è possibile comunicare le proprie aspettative in termini di qualità delle soluzioni che verranno sviluppate e inviate.

Importante

Questo elenco di controllo di esempio ha esclusivamente scopo informativo. Non è da intendersi come un elenco esaustivo di tutti i problemi di accettazione del codice né è corretto supporre che non siano necessarie ulteriori misure per una data organizzazione. Non viene fornita alcuna garanzia, esplicita o implicita, in relazione a questo elenco di controllo.

Contenuto dell'argomento:

Risorse disponibili per le procedure consigliate per lo sviluppo di SharePoint

In questa sezione è disponibile un elenco di risorse che è possibile fornire agli sviluppatori per consentire loro di progettare e implementare soluzioni conformi ai requisiti IT in termini di utilizzabilità, configurazioni supportate, prestazioni e protezione.

Elenchi di controllo di accettazione del codice

In questa sezione gli elenchi di controllo di accettazione del codice sono organizzati in base alle categorie seguenti: protezione, gestione delle sessioni, convalida, dati riservati, gestione delle eccezioni, web part, documentazione e procedure consigliate generali per lo sviluppo di software. Per una versione stampabile e modificabile dell'intero elenco di controllo, vedere Versione stampabile dell'elenco di controllo di accettazione del codice (https://go.microsoft.com/fwlink/?linkid=125134&clcid=0x410).

Nota

Gli elenchi di controllo riportati in questo documento vengono forniti a titolo di esempio per consentire di creare un elenco di controllo di accettazione del codice personalizzato in base alle esigenze dell'organizzazione. È possibile utilizzarli come punto di partenza per sviluppare un proprio elenco di controllo.

Protezione

In questa sezione dell'elenco di controllo di accettazione del codice sono riportati alcuni elementi suggeriti che contribuiscono a garantire che le soluzioni inviate per la distribuzione in un ambiente SharePoint siano state sviluppate conformemente alle procedure consigliate per la protezione.

[ ]

L'applicazione utilizza un elenco di inclusione (input noto, valido e sicuro) anziché un elenco di esclusione (rifiuto di input dannoso o pericoloso).

[ ]

Tutto l'input dell'utente è codificato con IOSec quando viene visualizzato ai client.

[ ]

La codifica dei caratteri è impostata dal server (la scelta consigliata è ISO-8859-1).

[ ]

Le password in testo normale non sono presenti in Web.config, Machine.config o qualsiasi file che contenga impostazioni di configurazione. Per crittografare le credenziali, vengono utilizzate utilità quali Aspnet_setreg.exe e Trustee o l'impostazione di identità in PoolApp per IIS 6.0 o IIS 7.0.

[ ]

I cookie contenenti dati riservati sono contrassegnati come protetti.

[ ]

Le superfici di input nelle web part e altre personalizzazioni includono controlli dei limiti, controlli di integrità dei dati di input e la gestione delle eccezioni appropriata al fine di prevenire attacchi di tipo cross-site scripting (XSS) e intrusivi nel codice SQL.

[ ]

Il progetto tiene conto di potenziali problemi di canonicalizzazione.

[ ]

La proprietà AllowUnsafeUpdates è utilizzata solo in caso di necessità. Per interagire con oggetti di SharePoint vengono utilizzati ValidateFormDigest() e, se necessario, privilegi elevati. Nei casi in cui è necessario utilizzare AllowUnsafeUpdates, questa proprietà è impostata su False nel blocco try-catch-finally oppure viene utilizzato un metodo Dispose() (in base a quanto richiesto dall'interfaccia IDisposable) per evitare problemi di protezione.

Gestione delle sessioni

In questa sezione dell'elenco di controllo di accettazione del codice sono riportati alcuni elementi suggeriti che contribuiscono a garantire che le soluzioni inviate per la distribuzione nell'ambiente SharePoint siano state sviluppate conformemente alle procedure consigliate per la gestione delle sessioni.

[ ]

Lo stato della sessione è persistente, imprevedibile e protetto da accessi non autorizzati o attacchi di tipo replay.

[ ]

La durata della sessione prevede un tempo di inattività massimo di 30 minuti.

[ ]

Gli identificatori di sessione non vengono passati nell'URL e la caratteristica di ASP.NET, ovvero la sessione senza cookie, non viene utilizzata.

[ ]

Il servizio dello stato sessione è disattivato se non viene utilizzato.

Convalida

In questa sezione dell'elenco di controllo di accettazione del codice sono riportati alcuni elementi suggeriti che contribuiscono a garantire che le soluzioni inviate per la distribuzione nell'ambiente SharePoint siano state sviluppate conformemente alle procedure consigliate per la convalida dell'input.

[ ]

La convalida dell'input viene applicata a tutti i punti di ingresso identificati, inclusi i campi modulo, le stringhe di query, i cookie, le intestazioni HTTP e i parametri dei servizi Web.

[ ]

L'opzione validateRequest di ASP.NET è attivata, se possibile.

[ ]

I dati vengono convalidati per tipo, lunghezza, formato e intervallo.

[ ]

La protezione non è basata sulla convalida sul lato client e la convalida è eseguita sul lato server.

[ ]

L'applicazione utilizza in modo coerente la convalida dell'input standardizzata, ad esempio sempre RegEx.

Dati riservati

In questa sezione dell'elenco di controllo di accettazione del codice sono riportati alcuni elementi suggeriti che contribuiscono a garantire che le soluzioni inviate per la distribuzione nell'ambiente SharePoint siano state sviluppate conformemente alle procedure consigliate per la protezione dei dati riservati.

[ ]

L'applicazione non registra dati riservati come testo non crittografato.

[ ]

I dati riservati non vengono archiviati nei cookie.

[ ]

I dati riservati non vengono archiviati in stringhe di query né campi modulo nascosti non crittografati. La gestione dello stato è eseguita sul lato server.

[ ]

Prima dell'invio, viene utilizzato SSL, IPSEC con la crittografia o la crittografia del livello dell'applicazione per proteggere i dati riservati durante la trasmissione.

[ ]

I dati riservati non vengono memorizzati nella cache. La cache di output è disattivata per impostazione predefinita.

[ ]

I dati riservati trasferiti tramite posta elettronica utilizzano la crittografia S/MIME oppure Information Rights Management (IRM) in base al destinatario previsto.

Gestione delle eccezioni

In questa sezione dell'elenco di controllo di accettazione del codice sono riportati alcuni elementi suggeriti che contribuiscono a garantire che le soluzioni inviate per la distribuzione nell'ambiente SharePoint siano state sviluppate conformemente alle procedure consigliate per la gestione delle eccezioni.

[ ]

L'applicazione utilizza sempre un approccio standardizzato alla gestione strutturata delle eccezioni e degli errori.

[ ]

Il codice di gestione degli errori eredita dalla classe SPException in modo da garantire un aspetto coerente di SharePoint in relazione agli errori.

[ ]

Nel caso di errori ed eccezioni, l'esito negativo dell'applicazione non comporta problemi di protezione.

[ ]

Le condizioni di eccezione non consentono a un utente di ignorare i controlli di protezione per eseguire codice privilegiato.

[ ]

L'applicazione restituisce messaggi di errore personalizzati generici al client.

[ ]

Il codice utilizza la gestione delle eccezioni. Il codice rileva solo le eccezioni note. Utilizzare ad esempio try{} catch(Exception ex){} solo se si genera di nuovo l'errore.

[ ]

Se il codice utilizza filtri delle eccezioni, non tiene conto della sequenza di esecuzione dei filtri (il filtro viene eseguito prima del blocco finally).

[ ]

Gli errori dell'applicazione non contengono informazioni riservate o informazioni che possano essere utilizzate per sfruttare l'errore.

Web part

In questa sezione dell'elenco di controllo di accettazione del codice sono riportati alcuni elementi suggeriti che contribuiscono a garantire che le soluzioni inviate per la distribuzione nell'ambiente SharePoint siano state sviluppate conformemente alle procedure consigliate per lo sviluppo di web part.

[ ]

Le web part personalizzate, inclusi i file di risorse, sono contenute all'interno di una caratteristica di SharePoint e vengono assemblate in un pacchetto sotto forma di una soluzione di SharePoint ai fini della distribuzione.

[ ]

La configurazione delle web part distribuite offre all'amministratore la flessibilità di scegliere se eseguire la distribuzione a livello dell'applicazione Web o a un livello inferiore.

[ ]

Per lo scambio di informazioni tra le web part in fase di esecuzione, viene utilizzato l'insieme standardizzato di interfacce di connessione nell'infrastruttura delle web part di SharePoint.

[ ]

Il codice sorgente per soluzioni web part di terze parti è corredato, laddove possibile, da documentazione adeguata in modo da assicurare un valido supporto tecnico.

[ ]

Tutte le web part personalizzate utilizzano l'architettura di SharePoint in modo da garantire un comportamento coerente nell'intera applicazione per funzionalità quali il servizio Single Sign-on, la distribuzione di caratteristiche e così via.

Documentazione

È consigliabile richiedere documentazione adeguata al fine di garantire che le procedure di installazione, supporto e test delle personalizzazioni da distribuire possano essere eseguite correttamente. La documentazione consente inoltre di identificare e diagnosticare tutti gli errori che vengono generati dalle personalizzazioni. In questa sezione dell'elenco di controllo di accettazione del codice sono riportati alcuni elementi suggeriti che contribuiscono a garantire che le soluzioni inviate per la distribuzione nell'ambiente SharePoint siano state sviluppate conformemente alle procedure consigliate per la documentazione.

[ ]

Le personalizzazioni sono accompagnate da istruzioni di installazione che illustrano in dettaglio come installare e disinstallare il pacchetto e includono i diagrammi dell'architettura per l'installazione della soluzione. Se non è possibile eseguire il rollback di una soluzione, questo aspetto deve essere segnalato nelle istruzioni di installazione affinché sia possibile esaminare i rischi e predisporre un piano di ripristino del sistema.

[ ]

Le personalizzazioni sono accompagnate dai documenti e dai risultati riguardanti i test.

[ ]

Le personalizzazioni sono accompagnate da un elenco di tutte le dipendenze, tra cui account/password, servizi Web, database, altre soluzioni o caratteristiche, patch, insiemi di strumenti o librerie e altro ancora.

[ ]

È disponibile un elenco di tutte le voci degli eventi generate dalle personalizzazioni e delle azioni da eseguire. L'elenco può essere redatto sotto forma di una tabella di codici di errore, in cui sono indicate la gravità e la causa principale di ogni codice.

[ ]

Il codice sorgente può essere facoltativamente fornito per accelerare la convalida e il testing da parte dell'organizzazione IT.

[ ]

Le personalizzazioni che rappresentano un aggiornamento di personalizzazioni distribuite in precedenza sono accompagnate dalla documentazione che descrive le modifiche, le considerazioni riguardanti l'aggiornamento e le istruzioni di rollback.

Procedure consigliate generali per lo sviluppo di software

In questa sezione dell'elenco di controllo di accettazione del codice sono riportati alcuni elementi suggeriti che contribuiscono a garantire che le soluzioni inviate per la distribuzione nell'ambiente SharePoint siano state sviluppate conformemente alle procedure consigliate per lo sviluppo di software.

[ ]

Agli assembly è assegnato un nome sicuro, fatta eccezione per gli assembly di pagine Web ASP.NET generati in modo dinamico che attualmente non possono avere un nome sicuro.

[ ]

Per proteggere e limitare la chiave privata utilizzata nel nome sicuro e nel processo di firma viene utilizzata la firma posticipata.

[ ]

Gli assembly includono attributi di protezione dichiarativi (con SecurityAction.RequestMinimum) per specificare i requisiti minimi di autorizzazione.

[ ]

Gli assembly con privilegi elevati sono separati dagli assembly con privilegi inferiori.

[ ]

Se un assembly deve essere utilizzato in un ambiente con attendibilità parziale, ad esempio se viene chiamato da un'applicazione Web con attendibilità parziale, il codice privilegiato è racchiuso in un assembly separato.

[ ]

Per supportare l'applicazione viene utilizzato un file di configurazione nativo anziché modificare la configurazione nel file Web.config.

[ ]

Viene utilizzato .NET Framework 2.0, 3.0 o 3.5.

[ ]

Viene utilizzata una singola versione di .NET Framework e non vengono combinate più versioni.

[ ]

Il codice è compatibile a 64 bit.

[ ]

L'applicazione non tenta di accedere direttamente a qualsiasi database di SharePoint. I dati archiviati in database di SharePoint sono aggiornati solo tramite il modello a oggetti di SharePoint.

[ ]

Le stringhe e le etichette non sono specificate a livello di codice e vengono invece utilizzati file di risorse e lingua.

[ ]

Per fare riferimento a oggetti SPWeb o SPSite viene utilizzata un'istruzione using o, in alternativa, una chiamata esplicita del metodo .Dispose in modo da garantire un corretto utilizzo e una corretta eliminazione degli oggetti memoria.

[ ]

La memorizzazione nella cache viene utilizzata in modo appropriato per ridurre inutili round trip. Per le web part, la scadenza (durata) della cache è esposta sotto forma di proprietà.

[ ]

Durante la creazione del pacchetto della soluzione, viene incluso un criterio di protezione dell'accesso di codice per la soluzione e, se necessario, l'assembly viene specificato nell'elenco dei controlli sicuri per la soluzione.

[ ]

Durante la registrazione di codice, viene utilizzata la classe Portal Log per creare i registri del Servizio di registrazione unificato (ULS, Unified Logging Service) di SharePoint.

[ ]

Per l'aggiornamento di più elementi di elenco mediante codice remoto viene utilizzato il servizio Web. SPListItem.Update() viene utilizzato solo se è necessario aggiornare più elementi contemporaneamente mediante codice locale basato sul modello a oggetti.

[ ]

Quando si utilizza la proprietà Count di un oggetto SPListItemCollection, la proprietà viene chiamata una sola volta e quindi viene archiviata in una variabile a cui è possibile fare riferimento durante un ciclo. Non eseguire la chiamata all'interno di un ciclo.

[ ]

La soluzione utilizza l'oggetto AppSettings per implementare il mapping XML, che può essere specificato mediante il framework di persistenza delle impostazioni in .NET 2.0, 3.0 o 3.5. La soluzione non crea file XML personalizzati né un oggetto fortemente tipizzato per il mapping XML.

[ ]

Nei registri eventi sono registrate le operazioni di installazione e distribuzione per consentire un'appropriata risoluzione dei problemi operativi durante l'installazione e la disinstallazione.

Scaricare il manuale

Questo argomento è incluso nel manuale seguente, che può essere scaricato per una lettura e una stampa più agevoli:

Vedere l'elenco completo dei manuali disponibili in Contenuto scaricabile per Office SharePoint Server 2007.