Considerazioni principali sulla sicurezza di SQLXML 4.0

Si applica a: SQL Server database SQL di Azure

Di seguito sono riportate alcune linee guida relative alla sicurezza quando si utilizza SQLXML per l'accesso ai dati.

  • Il provider SQLXMLOLEDB espone una proprietà StreamFlags che consente di impostare flag che indicano quali funzionalità SQLXML devono essere abilitate o disabilitate per ogni istanza specifica. È possibile utilizzare questa proprietà per personalizzare l'utilizzo di SQLXML e assicurarsi che siano abilitati solo i componenti desiderati. Per altre informazioni, vedere Provider SQLXMLOLEDB (SQLXML 4.0).

  • Gli eventuali errori SQLXML restituiti possono includere informazioni sullo schema del database, come i nomi delle tabelle o delle colonne oppure informazioni sui tipi. È consigliabile prestare attenzione quando si gestiscono questi errori in modo che le informazioni sull'installazione di SQL Server non siano facilmente individuabili dagli utenti in cui non sono previsti o necessari.

  • Se usato per eseguire query o inviare aggiornamenti a SQL Server, SQLXML non imposta alcun limite sulla quantità di dati che è possibile scambiare e non controlla le dimensioni dei dati in un payload SQLXML prima di tentare di elaborarlo. Quando si sviluppa l'applicazione utilizzando SQLXML, è necessario assicurarsi che sia presente una quantità di memoria sufficiente nel sistema per elaborare i dati. Quando ad esempio si eseguono query sui dati del server, è necessario verificare la presenza di spazio sufficiente nella memoria del client per riceverli. Analogamente, se si caricano dati nel server, è necessario verificare la disponibilità di memoria sufficiente nel server per elaborarli e di spazio di archiviazione su disco sufficiente nel server per archiviarli.

  • SQLXML genera dinamicamente query Transact-SQL e comandi di aggiornamento e li invia a SQL Server per l'esecuzione. Si tratta dell'unico sistema disponibile in SQLXML per eseguire query nel server e per aggiornare quest'ultimo. I risultati verranno ricevuti come flusso (di XML) o come set di righe.

  • Alla ricezione dei risultati delle query, non vengono eseguite azioni in base al contenuto dei dati ricevuti. Non vengono eseguite ulteriori operazioni di elaborazione in base al tipo o al contenuto dei dati. I dati non vengono mai trattati come codice con il quale eseguire azioni.

  • Quando si eseguono modelli XML, SQLXML converte le query XPath e DBObject contenute nel modello inviato in comandi Transact-SQL che vengono quindi eseguiti su SQL Server. Tali comandi influiscono solo sui dati esistenti. I comandi generati da SQLXML non modificheranno mai la struttura del database. Gli utenti devono inviare comandi espliciti per modificare la struttura del database, Ad esempio, includendoli in un blocco sql:query di un modello.

  • Quando si eseguono query DBObject e istruzioni XPath su file di mapping, SQLXML non prevede la modifica dei dati del database.

  • SQLXML può apportare modifiche di formattazione ai dati specificati in base alle differenze tra i modelli di dati XML e SQL Server. Il formato per la specifica dell'ora è ad esempio diverso. Poiché in SQLXML viene tentata la risoluzione di queste differenze, si potrebbero perdere alcune informazioni sulla precisione.

  • SQLXML non prevede l'impostazione di alcun limite sulla quantità di tempo necessaria per l'elaborazione dei dati. L'elaborazione continuerà finché non sarà stata completata o non si verificherà un errore.

  • SQLXML non prevede la scrittura nel file system. L'eventuale salvataggio dei dati recuperati dal database deve essere eseguito nel codice.

  • SQLXML consente agli utenti di eseguire qualsiasi query SQL sul database. Questa funzionalità non deve essere mai esposta a un'origine non protetta o non controllata, che equivarrebbe a consentire l'accesso al database SQL a qualsiasi utente.

  • Quando si eseguono Updategram, SQLXML converte i blocchi updg:sync in comandi DELETE, UPDATE e INSERT nell'istanza di SQL Server. Tali comandi influiscono solo sui dati esistenti. I comandi generati da SQLXML non modificheranno mai il database. Gli utenti devono inviare comandi espliciti per modificare la struttura del database, Ad esempio, includendoli in un blocco sql:query di un modello.

  • Quando si eseguono DiffGram, SQLXML converte i diffGram in comandi DELETE, UPDATE e INSERT nell'istanza di SQL Server. Tali comandi influiscono solo sui dati esistenti. I comandi generati da SQLXML non modificheranno mai il database. Gli utenti devono inviare comandi espliciti per modificare la struttura del database, Ad esempio, includendoli in un blocco sql:query di un modello.

Vedi anche

Considerazioni sulla sicurezza per SQLXML 4.0