Grundläggande säkerhetsöverväganden för SQLXML

gäller för:SQL ServerAzure SQL Database

Följande är säkerhetsriktlinjer för användning av SQLXML för dataåtkomst.

  • SQLXMLOLEDB-leverantören exponerar en egenskap StreamFlags som låter dig sätta flaggor som anger vilken SQLXML-funktionalitet som ska aktiveras eller inaktiveras för varje specifik instans. Du kan använda denna egenskap för att anpassa din användning av SQLXML och för att säkerställa att endast de komponenter du vill ha är aktiverade. För mer information, se SQLXMLOLEDB Provider (SQLXML 4.0).

  • När SQLXML-fel uppstår och returneras kan de inkludera information om databasschemat såsom tabellnamn, kolumnnamn eller typinformation. Du bör vara försiktig när du hanterar dessa fel så att information om din SQL Server-installation inte är lätt att hitta för användare där det inte är avsett eller behövt.

  • När SQLXML används för att antingen fråga eller skicka uppdateringar till SQL Server, sätter det ingen gräns för mängden data som kan utbytas och kontrollerar inte storleken på data i en SQLXML-payload innan man försöker bearbeta den. När du utvecklar din applikation med SQLXML är det ditt ansvar att säkerställa att det finns tillräckligt med minne i systemet för att bearbeta datan. Till exempel, när du frågar data från servern bör du kontrollera att det finns tillräckligt med minnesutrymme på klienten för att ta emot den. På samma sätt, om du laddar data till servern, måste du kontrollera att det finns tillräckligt med tillgängligt minne på servern för att bearbeta det och tillräckligt med tillgängligt diskutrymme på servern för att lagra datan.

  • SQLXML genererar dynamiskt Transact-SQL frågor och uppdateringskommandon och skickar dem till SQL Server för exekvering. Detta är det enda sättet som SQLXML gör och uppdaterar servern. Resultaten kommer att tas emot antingen som en ström (av XML) eller som en raduppsättning.

  • När SQLXML tar emot frågeresultat utför det inga åtgärder baserat på innehållet i den data som tas emot. Ingen ytterligare bearbetning görs baserat på typ eller innehåll i datan. Datan behandlas aldrig som kod för att utföra handlingar.

  • Vid exekvering av XML-mallar översätter SQLXML XPath- och DBObject-frågorna som finns i den inskickade mallen till Transact-SQL kommandon som sedan körs mot SQL Server. Dessa kommandon påverkar endast befintlig data. Kommandon som genereras av SQLXML kommer aldrig att förändra databasens struktur. Användare måste ge explicita kommandon för att ändra databasstrukturen. Till exempel genom att inkludera dem i ett sql:query-block i en mall.

  • När DBObject-frågor och XPath-satser körs över mappningsfiler kommer SQLXML inte att ändra datan i databasen på något sätt.

  • SQLXML kan göra formateringsändringar i den givna datan baserat på skillnader mellan XML- och SQL Server-datamodellerna. Till exempel är formatet för att ange en tid annorlunda. SQLXML kommer att försöka lösa dessa skillnader. Som ett resultat kan viss precisionsinformation gå förlorad.

  • SQLXML sätter ingen gräns för hur lång tid det tar att bearbeta datan. Bearbetningen fortsätter tills ett fel uppstår eller bearbetningen är klar.

  • SQLXML skriver inte till filsystemet. Om användare vill spara den data de hämtar från databasen måste de göra detta i sin kod.

  • SQLXML tillåter användare att utföra vilken SQL-förfrågan de vill mot databasen. Denna funktionalitet bör aldrig exponeras för en osäker eller okontrollerad källa, eftersom detta i praktiken öppnar SQL-databasen utan att tillhandahålla någon användare.

  • När Updategrams körs översätter SQLXML updg:sync-blocken till DELETE-, UPDATE- och INSERT-kommandon mot SQL Server-instansen. Dessa kommandon påverkar endast befintlig data. Kommandon som genereras av SQLXML kommer aldrig att förändra databasen. Användare måste ge explicita kommandon för att ändra databasstrukturen. Till exempel genom att inkludera dem i ett sql:query-block i en mall.

  • När DiffGrams körs översätter SQLXML DiffGram till kommandona DELETE, UPDATE och INSERT mot SQL Server-instansen. Dessa kommandon påverkar endast befintlig data. Kommandon som genereras av SQLXML kommer aldrig att förändra databasen. Användare måste ge explicita kommandon för att ändra databasstrukturen. Till exempel genom att inkludera dem i ett sql:query-block i en mall.

Se även

SQLXML 4.0 Säkerhetsöverväganden