Skip to main content

Was ist SQL?

SQL ist eine Programmiersprache, die in den 1970er Jahren entwickelt wurde.

Was ist SQL?

SQL ist eine Programmiersprache, die in den 1970er Jahren entwickelt wurde. Sie ist die Muttersprache relationaler Datenbanken und wird von Datenbankadministratoren und -entwicklern gleichermaßen verwendet, um Verbindungen zu Datenbanken herzustellen und verschiedene Verwaltungsaufgaben durchzuführen. SQL wurde im Laufe der Jahre erweitert, um eine breitere Palette von Aufgaben, wie Datenintegration und Datenanalyse, zu ermöglichen.


Merkmal

SQL (Structured Query Language) ist ein internationaler Standard für die Speicherung, Verwaltung und den Abruf von Daten in Datenbanken. Dies ist im Grunde die Sprache, die Sie zum Speichern, Verwalten und Abrufen von Daten aus einer Datenbank verwenden. Sie ist unverzichtbar für fast alle Arbeiten, die mit Daten zu tun haben, z. B. Finanzanalysen, Verwaltung von E-Mail-Marketingkampagnen, Website-Entwicklung, wissenschaftliche Forschung und vieles mehr.

Die häufigste Datenquelle für SQL sind relationale Datenbanken, die aus mehreren Tabellen bestehen. Jede Tabelle enthält Informationen über eine bestimmte Sache wie Kunden, Produkte oder Bücher. SQL-Abfragen werden auf eine Datenbank angewendet. Die Ergebnisse dieser Abfragen werden zur Anzeige von Daten auf der Website verwendet, z. B. von Produktbeschreibungen und Preisen. Die meisten Content-Management-Systeme (CMS) und E-Commerce-Websites verwenden SQL-Datenbanken, um die für ihr Geschäft relevanten Informationen zu speichern und abzurufen.

  • Die hohe Leistung und nahtlose Skalierbarkeit von SQL ermöglichen die Bewältigung komplexer, transaktionsintensiver Workloads. SQL ist schnell genug, um mit einer hohen Nutzung und großen Arbeitslasten Schritt zu halten.
  • SQL ist sehr zugänglich. Es ist mit den meisten Datenbanken (wie Microsoft SQL Server, Oracle Database, MySQL, SAP HANA und anderen) kompatibel und kann auch zur Erstellung von Programmerweiterungen verwendet werden.
  • Mit SQL ist es einfach, eine beliebige Anzahl von Tabellen zu erstellen und bestehende Tabellen in neue Datenbanken zu übertragen. Sie können problemlos eine große, skalierbare Datenbank erstellen, in der Sie nach Belieben Spalten und Zeilen hinzufügen oder entfernen können.
  • SQL eignet sich hervorragend für die Verwaltung großer Datenmengen und kann problemlos Tausende von Transaktionen gleichzeitig verarbeiten.
  • SQL verfügt über starke Sicherheitsfunktionen, die es Administratoren ermöglichen, Berechtigungen einfach zu verwalten. Jede Berechtigung wird für ein Benutzerkonto definiert, so dass Sie die angegebenen Berechtigungen und Zugriffsrechte überprüfen können. Diese Sicherheitsfunktionen sorgen für die Sicherheit Ihrer Daten.
  • SQL wurde entwickelt, um Abfragefunktionen auf Unternehmensebene für jede Organisation zu bieten, unabhängig von ihrer Größe oder Branche. SQL bietet Ihnen alles, was Sie zum Aufnehmen, Analysieren und Optimieren von Daten aus einer Vielzahl von Quellen benötigen, von lokaler Hardware bis hin zur Cloud.
  • SQL ist quelloffen, d. h. jeder kann auf den Code zugreifen und ihn an seine Bedürfnisse anpassen. Dies macht es auch ideal für kleine Organisationen, die nicht über große Budgets verfügen, da Open-Source-Optionen kostengünstiger sind als proprietäre Software. Mit Open-Source-Lösungen können Sie die Änderungen der Entwickler, die die Software unterstützen, verfolgen und problemlos aktualisierte Dokumentationen zu Ihrer speziellen Datenbanklösung erhalten.

Architektur

Das Datenbankmanagementsystem (DBMS) ist die Kernsoftware einer relationalen Datenbank und besteht aus vielen Subsystemen, die Abfragen, Aktualisierungen und die Speicherverwaltung durchführen. Das DBMS bietet eine Schnittstelle zwischen den Anwendern und dem Datenspeicher. Es stellt sicher, dass der Datenspeicher für jede Anwendung verfügbar ist, die SQL-Anweisungen oder Abfragen in Übereinstimmung mit Standardprotokollen ausführt. Auf diese Weise fungiert das DBMS als Übersetzer zwischen der Anwendung und den Dateien auf der Festplatte und Band. Es versteckt die Details des Speichers vor den Benutzern.


Server Versionen

SQL Server 2012

SQL Server 2012 ist ein auf Windows basierendes relationales Datenbankmanagementsystem, das zum Speichern und Analysieren großer Datenmengen verwendet wird. Es ist skalierbar für geschäftskritische Anwendungen mit hohen Verfügbarkeitsanforderungen. Die neueste Version dieser Plattform, SQL Server 2012, brachte eine neue Funktion, die als Columnstore Indexes bekannt ist und einen Standard für die Speicherung großer Datenmengen in einem Spaltenformat für Data Warehousing und andere Anwendungen darstellt. Zu den wichtigsten Funktionen von SQL Server 2012 gehören auch benutzerdefinierte Serverrollen und die Verfügbarkeit von AlwaysOn Availability Groups, einer erweiterten Funktionalität, die für Hochverfügbarkeit und Disaster Recovery entwickelt wurde.

SQL Server 2014

SQL Server 2014 brachte erhebliche Leistungsverbesserungen, darunter zwei neue Funktionen, die OLTP-Anwendungen unterstützen. In-Memory OLTP und die Pufferpool-Erweiterung schaffen einen virtuellen Puffercache innerhalb eines Solid-State-Laufwerks, was eine einfache und kostengünstige Möglichkeit zur Steigerung der E/A-Leistung darstellt.

SQL Server 2016

SQL Server 2016 war die erste Version von SQL Server, die ausschließlich auf 64-Bit-Servern lief. Sie bietet Unterstützung für die Ausführung von SQL Server in Docker-Containern, die Anwendungen auf einem gemeinsamen Betriebssystem voneinander isolieren, und enthält außerdem Funktionen wie: Always Encrypted, Stretch Database und Row-level Security.

SQL Server 2017

SQL Server 2017 führt neue Funktionen mit umfassenden Vorteilen für Datenexperten, Entwicklungsteams und DevOps-Mitarbeiter ein. Die Unterstützung für die Ausführung von SQL Server unter Linux verschafft Microsoft potenzielle Vorteile bei Kunden, die kein Windows verwenden oder gemischte Serverumgebungen haben. Eine weitere wichtige Funktion von SQL Server 2017 ist die Unterstützung für die Programmiersprache Python, eine Open-Source-Sprache, die in Analyseanwendungen weit verbreitet ist.

SQL Server 2019

Seit seiner Veröffentlichung hat SQL Server 2019 den Schwerpunkt auf Leistung, Sicherheit und Datenschutz gelegt. Es wurde die Big-Data-Cluster-Funktionalität eingeführt, mit der Sie skalierbare Cluster aus SQL Server-, Spark- und HDFS-Containern bereitstellen können, die auf Kubernetes laufen. SQL Server 2019 bietet außerdem Verbesserungen für Columnstore-Indizes, Datenvirtualisierungsfunktionen und die Maskierung statischer Daten.


Anwendungsbereiche

SQL ist eine der gefragtesten Programmiersprachen für die Datenanalyse. Sie ermöglicht die Steuerung und den Abruf gespeicherter Informationen in Datenbanken, sodass Sie die benötigten Daten zum richtigen Zeitpunkt abrufen können. SQL hilft Unternehmen, Entscheidungen auf der Grundlage gesammelter Daten zu treffen, und ist daher eine wichtige Fähigkeit für jeden, der mit Big-Data-Analysen arbeitet.

Es gibt verschiedene Versionen und Frameworks für SQL, die am häufigsten verwendete ist MySQL. MySQL ist eine Open-Source-Lösung, die die Rolle von SQL bei der Verwaltung von Backend-Daten für Webanwendungen erleichtert. Unternehmen wie Facebook, Instagram, WhatsApp usw. nutzen SQL für Back-End-Datenspeicher- und Datenverarbeitungslösungen.

SQL-Datenbanken werden in vielen Branchen zur Unterstützung von Websites und Unternehmen eingesetzt. Sie werden aber auch im Gesundheitswesen, im Finanzwesen, im Bildungswesen, bei Versicherungen und in der Fertigung eingesetzt. Der Zweck einer Datenbank besteht darin, Informationen in Tabellen zu speichern, auf die autorisierte Benutzer zugreifen können. Unternehmen verwenden SQL-Datenbanken, um Verkaufstransaktionen, Kundeninformationen und Mitarbeiterdaten zu speichern. In Krankenhäusern werden Patientendaten in SQL-Datenbanken gespeichert.

Finanzindustrie

Finanzdienstleistungen sind ein Bereich, in dem Datenbanken und SQL in vollem Umfang genutzt werden. Die Finanzindustrie umfasst viele Unternehmen im Bereich der Zahlungsverarbeitung und Bankanwendungen sowie Versicherungsgesellschaften und Kreditauskunfteien. Banken benötigen zusätzliche Sicherheitsvorkehrungen, um Online-Transaktionen durchführen zu können, und SQL bietet genau das, zusammen mit einer großartigen Datenbankunterstützung.

Musikindustrie

Die Musikindustrie hat sich in den letzten Jahren stark verändert, insbesondere im Hinblick auf die Digitalisierung, was zur Gründung mehrerer Streaming-Unternehmen geführt hat. Diese Unternehmen benötigen riesige Musikbibliotheken, die jederzeit für Hunderte von Millionen von Kunden verfügbar sein müssen. Diese Datenbanken sind groß und komplex und müssen daher entsprechend konzipiert werden, um ihren Zweck bestmöglich zu erfüllen.

Social-Media

Eine Social-Media-Datenbank ist ein unverzichtbares Instrument für jede Marketingkampagne, insbesondere wenn das Ziel darin besteht, durch Werbung Gewinne zu erzielen. Social-Media-Datenbanken enthalten Informationen über Millionen von Nutzern, die jeden Tag Websites besuchen und eine unglaubliche Menge an Bandbreite verbrauchen. Unternehmen können diese Informationen nutzen, um effektivere Werbung zu erstellen und den Verkehr auf ihre Websites zu lenken.


Karriere & Aufgaben

Mit 42,7 % aller Stellenausschreibungen im Datenbereich ist SQL eine der am häufigsten nachgefragten Fähigkeiten. Neben den Stellen für SQL-Entwickler gibt es weitere Berufe, die häufig SQL-Kenntnisse erfordern: Statistiker, Projektmanager, Salesforce-Analysten und Datenbankadministratoren.

Datenbankadministrator (DBA)

Stellt sicher, dass Daten ordnungsgemäß gespeichert, organisiert und verwaltet werden, damit sie schnell und genau abgerufen werden können.

Datenbank-Ingenieur

Plant, erstellt und verwaltet Datenbanken für ein Unternehmen.

Datenanalyst

Sortiert riesige Datenmengen, um daraus wichtige Geschäftserkenntnisse zu gewinnen. Datenanalysten verwenden SQL, um auf die in einer Datenbank gespeicherten Daten zuzugreifen, sie zu bearbeiten und zu analysieren.

Business-Intelligence-Analyst/Entwickler

Analysiert Daten, die für wichtige Geschäftsentscheidungen verwendet werden. Unterstützt häufig Initiativen zur statistischen Analyse.

QA-Ingenieur/Tester

Quality Assurance-Ingenieure und -Tester finden, untersuchen und melden, ähnlich wie Penetrationstester, Fehler in Software. Sie müssen SQL-Kenntnisse haben, um zu überprüfen, ob Datenbanken ordnungsgemäß funktionieren.

Software-Ingenieur

Viele Softwareingenieure arbeiten entweder direkt oder indirekt mit Datenbanken, was bedeutet, dass SQL-Kenntnisse von großem Vorteil sein können.


Abfragen-Optimierung

Ein Abfrageoptimierer ist eine Komponente des SQL-Servers, die die Abfrage analysiert und zu einem Ausführungsplan zusammenstellt, indem sie alle möglichen Permutationen und Kombinationen analysiert. Wenn eine SQL-Abfrage geschrieben und ausgeführt (oder geparst) wird, wird sie von einem Abfrageoptimierer verarbeitet. Die Abfrage erreicht den SQL-Server, wo sie in drei Phasen kompiliert wird: Parsen, Binden und Optimieren.

  • Parsing – Ein Prozess zur Überprüfung der Syntax
  • Binding – Ein Prozess zur Überprüfung der Abfragesemantik
  • Optimierung – Ein Prozess zur Erstellung des Ausführungsplans der Abfrage

Im dritten Schritt werden alle möglichen Permutationen und Kombinationen generiert, um den effektivsten Abfrageausführungsplan in einer angemessenen Zeit zu finden. Je kürzer die Abfrage ist.

——————-

Die Abfrageoptimierung ist ein Prozess zur Erstellung des Abfrageausführungsplans. Wenn eine SQL-Abfrage geschrieben und ausgeführt (oder geparst) wird, wird sie von einem Abfrageoptimierer verarbeitet. Die Abfrage erreicht den SQL-Server, wo sie in drei Phasen kompiliert wird: Parsen, Binden und Optimieren.

Parsing – Ein Prozess zur Überprüfung der Syntax

Binding – Ein Prozess zur Überprüfung der Abfragesemantik

Optimierung – Ein Prozess zur Erstellung des Ausführungsplans der Abfrage

Im dritten Schritt werden alle möglichen Permutationen und Kombinationen generiert, um den effektivsten Abfrageausführungsplan in einer angemessenen Zeit zu finden. Je kürzer die Abfrage ist, desto besser ist sie.


SQL-on-Hadoop Tools

SQL-on-Hadoop-Abfrage-Engines sind Tools, die es Benutzern ermöglichen, mit Daten auf Hadoop-Clustern zu interagieren, indem sie SQL anstelle einer benutzerdefinierten Sprache oder MapReduce-Anwendungsentwicklungsumgebung verwenden. Das Ergebnis ist eine schnellere Abfrageleistung und eine einfachere Verwaltung der Daten an einem zentralen Ort.

Sowohl die Hadoop MapReduce- als auch die Spark-Verarbeitungsmaschinen unterstützen die SQL-ähnliche Sprache HiveQL. Neben der Abfragesprache HiveQL bieten viele Hadoop-Anbieter ihre eigenen SQL-on-Hadoop-Tools und Konnektoren an. Mehr als ein Dutzend SQL-on-Hadoop-Tools sind von Hadoop-Distributionsanbietern und anderen Anbietern erhältlich; viele von ihnen sind Open-Source-Software oder kommerzielle Versionen. Darüber hinaus enthält die Apache Spark-Verarbeitungsmaschine, die häufig in Verbindung mit Hadoop verwendet wird, ein Spark-SQL-Modul, das ebenfalls SQL-basierte Programmierung unterstützt.

Zu den beliebtesten SQL-on-Hadoop-Tools gehören Impala, Drill und Presto. Alle diese Produkte unterstützen SQL-basierte Programmierung und Datenanalyse unter Verwendung eines relationalen Modells.

  • Impala ist eine von Cloudera entwickelte Open-Source-Software, die nativ auf HDFS läuft, aber auch mit anderen Hadoop-Distributionen verwendet werden kann.
  • Drill ist ein von Facebook gesponsertes Open-Source-Projekt, das sowohl Batch- und interaktive Verarbeitungsmodi als auch verteilte Verarbeitungsfunktionen unterstützt.
  • Presto ist ein Open-Source-Produkt von ParAccel, das für die interaktive Abfrage großer Datensätze über mehrere Rechnercluster hinweg entwickelt wurde.

SQL-on-Hadoop-Tools sind so konzipiert, dass sie das gleiche Maß an Funktionalität bieten wie relationale SQL-Implementierungen. Diese Tools unterstützen in SQL geschriebene Abfragen, sofern sie korrekt eingerichtet sind. Sie bieten auch Funktionen, die Ihnen bei der Verwaltung von Big Data-Workloads helfen können – wie materialisierte Ansichten, parallele Abfrageausführung und transparente Workload-Planung.


Vorteile

  • ist portabel und kann auf PCs, Laptops, Servern und mobilen Geräten verwendet werden.

  • ist schnell. Es verarbeitet Abfragen schnell und kann auch Vorgänge wie Einfügen, Löschen und Datenmanipulationen relativ schnell durchführen. Schnelle Abfrageverarbeitung spart Zeit und garantiert gleichzeitig Genauigkeit, so dass Sie nicht stundenlang auf Ihre Daten warten oder sie mit anderen teilen müssen.

  • erfordert keine Programmierkenntnisse, sondern nur die Verwendung von einfachen Schlüsselwörtern wie “select”, “insert into” und “update” etc.

  • die Syntax ist für viele Datenbanken und Sprachen einheitlich. Diese Einheitlichkeit bedeutet, dass Sie auf dieselben Funktionen zugreifen können, auch wenn Sie mehrere Datenbankplattformen verwenden. Dank des einheitlichen Formats ist SQL für Personen ohne Vorkenntnisse leichter zu erlernen, aber auch erfahrene Benutzer können sich schnell neue Techniken in einer anderen Sprache aneignen.

Nachteile

  • Wenn Sie eine SQL-basierte Datenbankplattform in Unternehmensqualität verwenden möchten, müssen Sie für dieses Privileg bezahlen. Es gibt auch Open-Source-Optionen, die jedoch nicht die Funktionalität und den Support ihrer Premium-Pendants bieten.

  • Eine SQL-Datenbank ist eine hervorragende Möglichkeit, Daten zu speichern, aber sie kann anfällig für Cyberangriffe sein.

  • Sie ist vergleichsweise einfach zu erlernende Programmiersprache, hat aber anfangs eine steile Lernkurve. Das liegt zum Teil an der oberflächlichen Komplexität der Abfragestrukturen und der Möglichkeit, bestimmte Aktionen auf sehr unterschiedliche Weise auszuführen.

    Das größte Problem mit SQL ist die Tatsache, dass es auf den ersten Blick nicht leicht zu verstehen ist. Die Syntax kann verwirrend sein, und es gibt viele verschiedene Möglichkeiten, Abfragen zu schreiben, um das gleiche Ergebnis zu erzielen.


Kosten

Wenn Sie eine SQL-basierte Datenbankplattform in Unternehmensqualität verwenden möchten, müssen Sie für dieses Privileg bezahlen. Es gibt auch Open-Source-Optionen, die jedoch nicht die Funktionalität und den Support ihrer Premium-Pendants bieten.

MongoDB bietet zum Beispiel eine Community Edition (CE), die von Entwicklern und gemeinnützigen Organisationen kostenlos genutzt werden kann. Wenn Sie mehr Funktionen benötigen, gibt es eine kostenpflichtige Enterprise Edition mit Enterprise-Support. Oracle bietet mit seinem Oracle Database Cloud Service das Gleiche an – die CE ist kostenlos, aber wenn Sie Support von Oracle-Ingenieuren wünschen, kostet das 5 US-Dollar pro Monat und Instanz.

Die Preisgestaltung für SQL-Datenbanken richtet sich in der Regel nach der Nutzung oder der Speichergröße. Amazon RDS berechnet beispielsweise 0,095 US-Dollar pro Stunde für die kleinste Instanzgröße (t1), die 1 GB RAM und 1 TB Speicherplatz umfasst. Dieser Betrag erhöht sich auf 0,104 $ pro Stunde, wenn Sie weitere 100 GB Speicherplatz und 2 GB RAM hinzufügen – so viel, dass es in vielen Fällen keinen Sinn macht, die Ressourcen über diesen Punkt hinaus zu erhöhen, da auch die Kosten drastisch steigen.

Zu den beliebtesten Datenbankplattformen gehören:

  • PostgreSQL
  • MySQL
  • Microsoft SQL-Server
  • Oracle
  • SAP HANA
  • SAP Adaptive Server

Die Kosten für die Datenbanklizenzierung variieren von Plattform zu Plattform, aber sie basieren in der Regel auf einer Pro-Socket- oder Pro-Core-Basis. Für eine mittlere Serverlizenz für Microsoft SQL Server oder Oracle müssen Sie mit Kosten zwischen 5 und 10 000 Dollar ( rund 4,97 – 9816,85 Euro) pro Jahr rechnen.


Gefahren / Cyberangriffe

SQL-Injektionsangriffe

Die häufigste Bedrohung sind SQL-Injection-Angriffe. Dabei verschafft sich ein Angreifer unbefugten Zugriff auf Ihre Daten, indem er bösartigen Code in eine Abfrage einfügt. Jedes Mal, wenn Sie Abfragen unter Verwendung von Benutzereingaben – wie Suchbegriffen oder Benutzernamen – erstellen, besteht die Gefahr, dass Sie einem Angreifer versehentlich die Ausführung beliebiger Befehle auf Ihrem Server ermöglichen.

Dies kann passieren, weil die meisten Abfragesprachen es Benutzern erlauben, ihre eigenen Werte für Parameter in einem Abfrage-String anzugeben, der Code enthalten kann, der auf Ihrem Datenbankserver ausgeführt wird und ihn dazu bringt, Dinge zu tun, die er nicht tun soll. Wenn Sie Abfragen durch Verkettung von Benutzereingaben mit statischen Strings wie SELECT * FROM table1 WHERE column1 = %

SQL-Injektionen lassen sich anhand ihrer Methoden des Datenzugriffs, ihres Schadenspotenzials und der Menge der dem Angreifer zur Verfügung stehenden Informationen kategorisieren. Die drei Hauptkategorien sind In-Band-SQLi (Classic), Inferential-SQLi (Blind) und Out-of-Band-SQLi.

In-band SQLi

In-Band-SQLi ist eine der häufigsten Arten von SQL-Injection-Angriffen. Bei dieser Art von Angriff nutzt der Angreifer denselben Kommunikationskanal, um seine Angriffe zu starten und die Ergebnisse zu sammeln. Die Einfachheit und Effizienz von In-Band-SQLi machen es zu einer der häufigsten Arten von SQLi-Angriffen.

Bei dieser Methode gibt es zwei Untervarianten:

Fehlerbasiertes SQLi: Der Angreifer führt Aktionen aus, die die Datenbank dazu veranlassen, Fehlermeldungen zu erzeugen. Der Angreifer kann die von diesen Fehlermeldungen gelieferten Daten nutzen, um Informationen über die Struktur der Datenbank zu sammeln.

Unionsbasiertes SQL: Diese Technik macht sich den UNION-SQL-Operator zunutze, der mehrere von der Datenbank generierte Select-Anweisungen zu einer einzigen HTTP-Antwort zusammenfasst. Diese Antwort kann Daten enthalten, die vom Angreifer missbraucht werden können.

Inferential (Blind) SQLi

Blind SQLi ist eine Technik, die verwendet wird, um Informationen über die Struktur einer Datenbank herauszufinden, ohne die von einer SQL-Abfrage zurückgegebenen Daten sehen zu können. Diese Methode wird als “blind” bezeichnet, da keine Daten von der Datenbank der Website an den Angreifer übertragen werden, so dass der Angreifer keine Informationen über den Angriff im Band sehen kann.

Der Angreifer sendet Daten-Payloads an den Server und beobachtet die Antwort und das Verhalten des Servers, um mehr über seine Struktur zu erfahren. Diese Methode wird als blindes SQLi bezeichnet, da die Daten nicht von der Datenbank der Website an den Angreifer übertragen werden, so dass der Angreifer keine Informationen über den Angriff im Band sehen kann.

Blinde SQL-Injektionen verlassen sich auf die Antwort- und Verhaltensmuster des Servers und sind daher in der Regel langsamer in der Ausführung, können aber genauso schädlich sein.

Dabei wird eine indirekte Methode verwendet, um festzustellen, ob an einem bestimmten Punkt in einem Anfrage/Antwort-Zyklus Informationen vorhanden sind. Dieser Prozess wird oft als “Fuzzing” oder “Brute-Force”-Test bezeichnet.

Blinde SQL-Injektionen können wie folgt klassifiziert werden:

Boolean: Der Angreifer sendet eine SQL-Abfrage an die Datenbank und fordert die Anwendung auf, ein Ergebnis zu liefern. Das Ergebnis hängt davon ab, ob die Abfrage wahr oder falsch ist. Je nach Ergebnis werden die Informationen in der HTTP-Antwort geändert oder bleiben unverändert. Der Angreifer kann dann herausfinden, ob die Nachricht ein richtiges oder falsches Ergebnis geliefert hat.

Zeitbasierte Angreifer senden eine SQL-Abfrage an die Datenbank, die die Datenbank warten lässt (für einen Zeitraum in Sekunden), bevor sie reagieren kann.

Out-of-band SQLi

Die Out-of-Band-SQL-Injektion ist eine Angriffsart, die der In-Band- und der Inferential-SQLi ähnelt, die jedoch durchgeführt wird, wenn der Angreifer nicht denselben Kanal zum Starten des Angriffs und zum Sammeln von Informationen verwenden kann, oder wenn ein Server zu langsam oder instabil ist, um diese Aktionen durchzuführen. Diese Techniken beruhen auf der Fähigkeit des Servers, DNS- oder HTTP-Anfragen zu erstellen, um Daten an einen Angreifer zu übertragen.

In diesem Fall kann ein Angreifer versuchen, Schwachstellen in einer Anwendung auszunutzen, die es ihm ermöglichen, SQL-Abfragen ohne Verwendung eines Formularparameters auszuführen. Diese Art von Schwachstelle kann in Anwendungen gefunden werden, die dynamische SQL-Abfragen (einschließlich gespeicherter Prozeduren) ohne Validierung der Eingabewerte verwenden.

Die häufigste Ursache für diese Art von Schwachstelle ist eine mangelhafte Eingabevalidierung durch die Entwickler. Bei Out-of-Band-Angriffen verwenden Angreifer in der Regel DNS- oder HTTP-Anfragen direkt von ihren eigenen Rechnern gegen einen anderen Rechner, auf den sie Zugriff haben (z. B. über SSH).


SQL-Sprachelemente

SQL besteht aus Anweisungen, die mit einem Schlüsselwort beginnen und mit einem Semikolon enden.

  • Keywords(Schlüsselwörter) – In jeder SQL-Anweisung gibt es ein oder mehrere Schlüsselwörter(ADD, JOIN, VIEW, etc.), die festlegen, was genau die Anweisung bewirkt.
  • Identifiers (Bezeichner) –  Die Namen von Objekten in der Datenbank, wie z. B. Tabellen, Ansichten, Indizes, Spalten usw. Diese unterscheiden Groß- und Kleinschreibung (Großschreibung ist wichtig), daher ist es wichtig, eindeutige Bezeichner zu verwenden, wenn mehrere Objekte denselben Namen haben.
    • Primärschlüssel: eindeutiger Bezeichner für jeden Datensatz in der Datenbank. Ein Primärschlüssel kann eine einzelne Spalte oder mehrere Spalten sein.

    • Fremdschlüssel: Ein Fremdschlüssel ist eine Spalte in einer Tabelle, die auf einen Primärschlüsselwert in einer anderen Tabelle verweist. Fremdschlüssel werden zur Wahrung der referentiellen Integrität verwendet, indem sie sicherstellen, dass nur gültige Beziehungen zwischen Tabellen in der Datenbank erstellt werden.

  • Expressions (Ausdrücke) –  Ein Symbol oder eine Kette von Symbolen, die mathematische Operationen mit Daten durchführen. 2+4 wäre zum Beispiel ein Ausdruck, weil Sie zwei Zahlen addieren, um sechs zu erhalten. Sie können Ausdrücke auch für die Verkettung von Zeichenfolgen (mit dem “+”-Zeichen) und die Datumsarithmetik (mit “/”) verwenden.
  • Search Conditions (Suchbedingungen) – Wird verwendet, um eine Teilmenge von Zeilen aus einer Tabelle auszuwählen. Sie können auch IF-Anweisungen erstellen, um anzugeben, ob eine Bedingung in einer bestimmten Zeile oder Gruppe von Zeilen wahr oder falsch ist.
  • Data Types(Datentypen) – Art der Daten, die bei der Erstellung einer Tabelle in jeder Spalte gespeichert werden sollen. Beispiele sind Zahlen, Zeichenketten, Datum und Uhrzeit usw.
  • NULL´s (NULL) – Verwenden Sie eine Null, um einen unbekannten oder fehlenden Wert anzugeben.
  • Comments (Kommentare) –  Kommentare werden verwendet, um Abschnitte von SQL-Anweisungen zu erläutern. Sie beginnen mit zwei Bindestrichen (–) und enden mit einem Sternchen (*).

SQL-Anweisungen

Bei SQL-Anweisungen spielt die Groß- und Kleinschreibung keine Rolle, d. h. sie können in Klein- oder Großbuchstaben oder in einer Kombination davon geschrieben werden. Zum Beispiel ist die Anweisung create table user1 das gleiche wie create TABLE user1. Eine Anweisung in gemischter Groß- und Kleinschreibung zu schreiben, hat jedoch zwei Nachteile: Es ist nicht empfehlenswert, da einige Tools sie anders behandeln könnten (z. B. als case-insensitive) und die SQL-Schlüsselwörter sich dadurch optisch von anderen SQL-Bezeichnern unterscheiden. Eine gute Praxis ist es, alle SQL-Anweisungen in Kleinbuchstaben zu schreiben.

Die SQL-Sprache ist eine Familie von Datenbankprogrammiersprachen. Sie besteht aus DDL, DQL, DML, DCL und TCL.

Data Definition Language – DDL

Data Definition Language (DDL) ist eine Programmiersprache, die zum Erstellen, Ändern oder Löschen von Datenbankobjekten verwendet wird. DDL-Befehle werden auch als Datendefinitionsbefehle bezeichnet, da sie zur Definition von Datentabellen verwendet werden. DML steht für Data Manipulation Language, die Programmiersprache, die für den Zugriff auf und die Bearbeitung von Daten in einer Datenbank verwendet wird.

Zu den gebräuchlichsten DDL-Befehlen gehören:

CREATE TABLE – Erstellen Sie eine neue Tabelle in Ihrer Datenbank.

ALTER TABLE – Ändern Sie die Definition einer bestehenden Tabelle in Ihrer Datenbank.

DROP TABLE – Löscht eine bestehende Tabelle aus Ihrer Datenbank.

CREATE INDEX – Erstellen eines Index für eine oder mehrere Spalten in einer Tabelle, um die Abfrageleistung zu verbessern

CREATE TABLE "NamedeinerTabelle" (
	"NamederVariable Datentypus", 
	"NamederVariable Datentypus", 
	"NamederVariable Datentypus" );

Data Query Language – DQL

Die Datenabfragesprache besteht aus nur einem Befehl, SELECT, mit dem bestimmte Daten aus Tabellen abgerufen werden können. Dieser Befehl wird manchmal mit den DML-Befehlen (Data Manipulation Language) gruppiert, zu denen auch INSERT- und UPDATE-Anweisungen gehören.

SELECT "Spaltenname"
FROM "Tabellenname"

Data Manipulation Language – DML

DML-Befehle (Data Manipulation Language) werden verwendet, um Daten in vorhandenen Tabellen durch Hinzufügen, Ändern oder Entfernen von Daten zu manipulieren. Im Gegensatz zu DDL-Befehlen, die definieren, wie Daten gespeichert werden, arbeiten DML-Befehle in den mit DDL-Befehlen definierten Tabellen.

Data Manipulation Language (DML) ist eine Sammlung von SQL-Anweisungen, die zum Ändern und Abrufen von Daten aus Datenbanken verwendet werden. Die gängigsten DML-Anweisungen sind INSERT, UPDATE, DELETE, SELECT und MERGE.

Der INSERT-Befehl fügt neue Zeilen zu einer Tabelle hinzu. Verwenden Sie diesen Befehl, wenn Sie neue Datensätze zu einer bestehenden Tabelle hinzufügen möchten.

Der UPDATE-Befehl modifiziert bestehende Datensätze in einer Tabelle, indem er deren Werte ändert. Wenn Sie zum Beispiel Ihre Adresse in der Tabelle Adressbuch aktualisieren und von “Joe Bloggs” in “Joe Bloggs Ltd” ändern möchten, verwenden Sie folgende Syntax: UPDATE AddressBook SET AddressLine = ’15 Main Street’ WHERE ContactID = 1;

INSERT INTO "TabellenName" (
    "SpaltenName1",
    "SpaltenName2" )
VALUES (
    'NeueNamenderVariable1',
    'NeueNamenderVariable2' );

Data Control Language – DCL

Data Control Language (DCL)-Befehle werden verwendet, um Benutzern Zugriffsrechte zu gewähren oder zu entziehen. Ein Benutzer kann nur SQL-Befehle ausführen, die ihm zugewiesen wurden.

SQL DCL-Befehle werden auch vom Datenbankadministrator (DBA) verwendet, um die Datenbank und ihre Sicherheitseinstellungen zu verwalten.

Die wichtigsten SQL DCL-Befehle sind:

GRANT: Erteilt einem Benutzer die Berechtigung für bestimmte Objekte in der Datenbank.

REVOKE: Entzieht einem Benutzer die Berechtigung für bestimmte Objekte innerhalb der Datenbank.

DENY: Verweigert den Zugriff für bestimmte Benutzer und Rollen.

GRANT SELECT, UPDATE ON "MY_TABLE" TO "SOME_USER", "ANOTHER_USER";

Transaction Control Language – TCL

Transaction Control Language-Befehle werden verwendet, um den Zustand bestimmter Daten zu ändern, z. B. um Transaktionsänderungen zu ÜBERNEHMEN (COMMIT) oder um Transaktionsänderungen zurückzunehmen (ROLLBACK). SQL-Befehle werden in Verbindung mit SELECT-Anweisungen verwendet.

Befehle können sein:

COMMIT – Markiert die aktuelle Transaktion als abgeschlossen und bereit für die Verwendung durch andere Benutzer.

ROLLBACK – Bricht anstehende Aktualisierungen seit der letzten Commit- oder Rollback-Operation ab, hat aber keine Auswirkungen auf permanente Änderungen (z. B. Löschungen).

SET TRANSACTION – Wird verwendet, um die Eigenschaften der aktuellen Transaktion festzulegen.

DELETE FROM "TabellenName"  
WHERE "RollNo =25";  
COMMIT;

Sicherheitsmaßnahmen

Sicherheitsüberprüfungen

SQL Server-Sicherheitsüberprüfungen sind ein wichtiger Bestandteil jeder SQL Server-Sicherheitsstrategie. Regelmäßige Sicherheits-, Anmelde- und Berechtigungsprüfungen des Servers sind eine Voraussetzung für die Verhinderung potenzieller Angriffe und die Unterstützung bei der forensischen Analyse eines möglichen Datenverstoßes. Ein SQL Server-Sicherheitsaudit auf Unternehmensebene ist jedoch nicht nur eine Sicherheitsinvestition, sondern aufgrund der neuen Gesetze wie HIPAA und GDPR auch eine gesetzliche Vorschrift.

Um eine SQL Server-Instanz zu prüfen, müssen Sie zunächst festlegen, was Sie prüfen wollen. Sie können eine Vielzahl von Dingen überprüfen:

  • Benutzeranmeldungen und -abmeldungen
  • C2-Konformitätsprüfungen
  • Compliance-Standards für gemeinsam genutzte SQL-Server
  • Login-Prüfung
  • Überprüfungen der Serverkonfiguration
  • Änderungen am Datenbankschema
  • SQL Trace Extended Events (ETE)
  • Änderungsdatenerfassungsereignisse (CDC) DML-, DDL- und Anmeldetrigger
Sichere Passwörter

Ein sicheres Passwort ist eines der wichtigsten Elemente jeder Sicherheitsstrategie. Es kann Ihr System vor Brute-Force-Angriffen und anderen Bedrohungen der Cybersicherheit schützen.

  • Das Passwort sollte lang und komplex genug sein, damit Angreifer seine Länge oder seinen Inhalt nicht erraten können. Außerdem sollte es eine Mindestanzahl von Zeichen enthalten, darunter Zahlen, Groß- und Kleinbuchstaben sowie Sonderzeichen wie Ausrufezeichen, Fragezeichen, Dollarzeichen, Sternchen usw.
  • Vermeiden Sie leicht zu erratende Passwörter wie “Passwort” oder Namen und Geburtsdaten Ihres Ehepartners. Verwenden Sie außerdem nicht dasselbe Passwort für mehrere Systeme.

Tools zur Passwortverwaltung

Verwenden Sie Tools zur Passwortverwaltung mit einem starken Hauptschlüssel, um mehrere Passwörter zu speichern. Mit diesen Tools können Sie Ihre Passwörter sicher in einer verschlüsselten Datenbank auf Ihrem Computer oder Mobilgerät verwalten. Sie können dann Einmal-Passwörter für den Zugriff auf verschiedene Anwendungen verwenden, ohne sich diese alle merken zu müssen. Der Hauptschlüssel ermöglicht es nur autorisierten Benutzern, sicher auf die Datenbank zuzugreifen, und zwar mit ihren eigenen eindeutigen Passwörtern, die nirgendwo anders als in ihrem eigenen Kopf gespeichert sind!

Datenbankenfunktionen einschränken

Beschränken Sie die Installation der SQL-Datenbankkomponenten und -funktionen auf diejenigen, die für bestimmte Aufgaben erforderlich sind. Dadurch wird die Ressourcennutzung durch die Datenbank reduziert, die Verwaltung vereinfacht und somit das Sicherheitsrisiko minimiert.

Privilegien beschränken

Das Prinzip der minimalen Privilegien ist ein gängiger Ausdruck in den Bereichen Informationssicherheit und IT. Er besagt, dass ein Konto nur mit den Privilegien (in diesem Fall mit den minimalen Berechtigungen und Systemrechten) ausgestattet werden sollte, die für sein ordnungsgemäßes Funktionieren erforderlich sind.

Hier sind einige Konten, die Sie für die SQL-Serverdienste verwenden können.

Domänenbenutzerkonto – Dies ist der am häufigsten verwendete Kontotyp für die Ausführung von SQL-Serverdiensten, da er aufgrund der fehlenden Administratorrechte recht sicher ist.

Active-Directory-verwaltetes Dienstkonto – Dieses Konto ist sicherer als ein Domänenbenutzerkonto, da man sich mit diesem Konto nicht am Server anmelden kann und die Kennwortrücksetzungen nicht manuell verwalten muss.

Lokales Benutzerkonto – Dies ist in der Regel eine gute Wahl für Nicht-Domänen-Umgebungen.

Lokales Systemkonto – Diese Konten haben umfassende Rechte und uneingeschränkten Zugriff auf alle lokalen Systemressourcen. Das lokale Systemkonto verfügt über Berechtigungen, die ein SQL-Server nicht benötigt, daher sollten Sie es nicht für die Ausführung von Diensten verwenden.

Netzwerkdienstkonto – Es hat weniger Berechtigungen als ein Systemkonto, aber mehr Zugriff auf Netzwerkressourcen und -objekte als Mitglieder der Gruppe Benutzer. Vermeiden Sie die Verwendung dieses Kontotyps wann immer möglich.

Virtuelles Dienstkonto – Dieses Konto ähnelt dem AD-verwalteten Dienstkonto, kann aber zur Verwaltung von Diensten ohne Domäne verwendet werden. Technisch gesehen ist es wie ein eingebauter Netzwerkdienst.

SQL-Überwachungstools

Überwachungswerkzeuge können die Einhaltung vieler Sicherheitsstandards gewährleisten. Sie sollten in der Lage sein, die Prozesse einer Datenbankanwendung zu scannen und die Änderungen in den Einstellungen des Datenbankservers zu überwachen. Überwachungswerkzeuge sollten Fehler, Sitzungen und einzelne SQL-Anweisungen, die den Zugriff auf sensible Informationen ermöglichen, sofort erkennen.


Alternative

NoSQL

NoSQL-Datenbanken können nicht-relational sein, d. h. sie verwenden kein Schema mit Zeilen und Spalten. NoSQL-Datenbanken ermöglichen es Ihnen, Daten auf viele verschiedene Arten zu speichern, je nach den Anforderungen der Art der zu speichernden Daten. Zu den NoSQL-Datenbanken gehören Apache Cassandra, MongoDB und Couchbase, auf die Sie nicht mit SQL zugreifen können.


training cta

Lassen Sie sich von unseren Beratern gleich ein Angebot erstellen

Hallo! Wir sind ComputerButler und freuen uns darauf, Sie dabei zu unterstützen, das volle Potenzial Ihres Unternehmens zu entfalten.

WordPress Cookie Notice by Real Cookie Banner