In questa sezione analizzeremo i seguenti argomenti:
Sicurezza
Un'origine dati può operare in una delle due modalità di accesso seguenti:
-
In modalità di accesso limitato, che è l'impostazione predefinita, un'origine dati gestisce solo le richieste che provengono dallo stesso dominio in cui si trova l'origine dati. La Modalità con restrizioni previene gli attacchi di gerarchia di richieste da più siti (XSRF) ed è quindi più sicura della modalità di accesso senza limitazioni. Poiché la libreria dell'origine dati fornisce un'interfaccia per restituire solo i dati e non per modificare lo stato o i dati lato server, sono possibili solo attacchi XSRF che tentano di rubare i dati. Per proteggere l'origine dati dai tentativi di rubare dati, è necessario utilizzare la modalità con restrizioni insieme all'autenticazione basata sui cookie. Il modo in cui autentichi gli utenti dipende dal tuo ambiente e dalla tua implementazione.
-
In modalità di accesso senza restrizioni, un'origine dati soddisfa tutte le richieste indipendentemente dalla sua origine. Un'origine dati eseguita in modalità senza restrizioni può essere protetta tramite autenticazione basata su cookie, ma tieni presente che l'origine dati sarà vulnerabile agli attacchi XSRF. Utilizza la modalità senza restrizioni se le visualizzazioni di pagina web all'esterno del dominio dell'origine dati devono accedere a quest'ultima o se i dati si trovano nel dominio pubblico e pertanto non devono essere protetti.
Una richiesta di visualizzazione può specificare un formato di risposta in formato JSON, CSV o HTML. Il formato della risposta determina il formato in cui un'origine dati restituisce una tabella di dati. Poiché i formati CSV e HTML non sono vulnerabili agli attacchi XSRF, è possibile accedervi da altri domini, anche in modalità con restrizioni.
Per specificare la modalità senza restrizioni, sostituisci isRestrictedAccessMode()
come segue:
@Override protected boolean isRestrictedAccessMode() { return false; }
Per semplicità, tutti gli esempi forniti con la libreria vengono eseguiti in modalità di accesso illimitato.
Errori e avvisi
Quando non è possibile, o desiderabile, restituire una tabella di dati valida, la libreria genera un
DataSourceException
. Ad esempio, se l'utente non può essere autenticato. La libreria genera queste eccezioni quando gli errori impediscono la creazione di una tabella di dati. Potresti creare eccezioni in situazioni specifiche dell'origine dati. In questo caso, crea i tuoi tipi di eccezioni per gli errori ereditando dalla classe DataSourceException
. Puoi anche avviare direttamente il corso DataSourceException
.
La classe DataSourceException
si trova nel pacchetto base
e richiede i seguenti parametri:
ReasonType
Questo parametro è obbligatorio. I tipi di motivi disponibili sono definiti nell'enumerazioneReasonType
. Se nessuno dei tipi di motivi disponibili è adatto, puoi utilizzareOther
oInternal
.
MessageToUser
Questo parametro definisce il testo del messaggio di errore. Nella maggior parte dei casi, viene mostrata all'utente come descrizione comando, quindi è importante non includere informazioni tecniche o riservate.
Puoi utilizzare l'insieme di funzioni helper
in datasource.DataSourceHelper
per gestire
gli errori. In questo caso, chiama due funzioni con lo stesso nome di setErrorServletResponse
per
effettuare un DataSourceException
e impostare un errore nella risposta del
server di dati. Una di queste funzioni accetta una richiesta di origine dati, l'altra utilizza un elemento HttpServlet request
e viene utilizzata nei casi in cui si è verificato un errore durante la creazione di un elemento DataSourceRequest
. Un
implementazione di esempio è disponibile in Definizione delle funzionalità e del flusso di eventi.
Se non è possibile restituire una tabella di dati, la libreria restituisce un errore. Se è possibile restituire una tabella di dati, ma si è verificato un problema da segnalare, la libreria restituisce un avviso insieme alla tabella di dati. Ad esempio, la libreria crea un avviso nelle seguenti situazioni:
- se una visualizzazione di query fornisce un
LIMIT
che risulta in dati troncati. - se una visualizzazione delle query richiede un pattern di formattazione non valido in una clausola
FORMAT
.
Per aggiungere un avviso, crea un'istanza di base.Warning
e aggiungila alla tabella dei dati utilizzando il metodo addWarning()
.
Logging
La biblioteca utilizza il diario comune di Giacarta. Il logging di Giacarta Common può essere utilizzato con i sistemi di logging più comuni che potresti già aver implementato. Potrebbe essere necessario scrivere un adattatore se il sistema di logging non è standard. Per ulteriori dettagli, consulta la home page del logging di Giacarta.
Quando viene generata un'eccezione, le informazioni vengono inviate al log. La modalità di accesso al log dipende dal sistema di logging che utilizzi.