Das Buch umfasst 400 Seiten. Das Inhaltsverzeichnis gibt einen Überblick über die behandelten Themen.
Vorwort | 13 | |
Einleitung | 15 | |
1 | Aufwand versus Sicherheit – was ist angemessen? | 17 |
1.1 | Warum ist es wichtig zu wissen, wer meine Anwendung angreifen will? | 17 |
1.2 | Wer sind also die typischen Angreifer? | 18 |
1.3 | Wie schlimm ist ein erfolgreicher Angriff? | 29 |
2 | Sprich »Freund« und tritt ein | 31 |
2.1 | Authentifizierung | 31 |
2.2 | Authentifizierung mittels Windows-Login | 32 |
2.3 | SQL Server-Authentifizierung mittels SQL-Logins | 40 |
2.4 | Administratives | 54 |
3 | Benutzer und Rollen | 61 |
3.1 | Autorisierung über User und Rollen | 61 |
3.2 | Rollen | 76 |
3.3 | User mit Passwort in »contained databases« | 91 |
4 | Rechte – Der Unterschied zwischen Wollen und Dürfen | 99 |
4.1 | Minimale Rechte | 99 |
4.2 | Explizite Rechte | 100 |
4.3 | Implizite Rechte | 120 |
4.4 | Besitzverkettungen | 129 |
4.5 | Datenbankübergreifende Rechte | 137 |
5 | Spieglein, Spieglein an der Wand | 147 |
5.1 | Was hat die Architektur damit zu tun? | 147 |
5.2 | Allgemeine Gegenüberstellung | 150 |
5.3 | Fat-Client | 154 |
5.4 | Thin-Client mit App-Service | 162 |
6 | Rechteprüfung in der Anwendung | 169 |
6.1 | Technische Rechte versus inhaltliche Rechte | 169 |
6.2 | Minimalistisches Konzept | 170 |
6.3 | Zuordnungstabelle | 179 |
6.4 | Rechteprüfung mit eigener Benutzerverwaltung? | 190 |
7 | SQL-Injection | 201 |
7.1 | Was ist SQL-Injection? | 201 |
7.2 | Die zweite Verteidigungslinie | 213 |
7.3 | Wirksame Abhilfe durch Parameternutzung | 214 |
7.4 | Abhilfe durch Eingabevalidierung | 219 |
7.5 | Abhilfe mit »Quoting« | 222 |
7.6 | Bedingte Abhilfe durch Einsatz von Views | 223 |
8 | Verschlüsselung mit Zertifikaten und asymmetrischen Schlüsseln | 225 |
8.1 | Was sind Zertifikate? | 226 |
8.2 | Zertifikate durch den SQL Server schützen lassen | 227 |
8.3 | Zertifikate anlegen | 231 |
8.4 | Welche Zertifikate werden vom SQL Server unterstützt? | 236 |
8.5 | Asymmetrische Verschlüsselung mit Zertifikat | 238 |
8.6 | Asymmetrische Verschlüsselung mit gespeichertem Schlüssel | 243 |
8.7 | Risiken und Nebenwirkungen | 246 |
9 | Symmetrische Verschlüsselung | 247 |
9.1 | Symmetrische Verschlüsselung mit Passwort | 247 |
9.2 | Symmetrische Schlüssel in Datenbank speichern | 257 |
9.3 | Symmetrische Verschlüsselung mit gespeichertem Schlüssel | 260 |
9.4 | Mit Zertifikat verschlüsselter symmetrischer Schlüssel | 266 |
9.5 | Symmetrischen Schlüssel mit asymmetrischem Schlüssel schützen | 269 |
9.6 | Größe zeigen | 273 |
9.7 | Abgrenzung zur »Transparent Data Encryption« | 275 |
10 | Daten hashen und signieren | 277 |
10.1 | Hashing als Einwegverschlüsselung | 277 |
10.2 | Hashing als änderungserkennung | 284 |
10.3 | Daten mit Zertifikat signieren | 289 |
10.4 | Daten mit asymmetrischem gespeicherten Schlüssel signieren | 295 |
11 | Security-Features rund um gespeicherte Prozeduren | 301 |
11.1 | Ausführung in anderem Benutzerkontext | 301 |
11.2 | Code-Signierung | 323 |
11.2.1 | Wie funktioniert Code-Signierung? | 323 |
11.2.2 | Erweiterung der User-Rechte | 324 |
11.2.3 | Praktischer Nutzen | 328 |
11.3 | Verschleierte Speicherung des Quellcodes | 330 |
12 | Auditing | 335 |
12.1 | Kontrolle des Zugangs mit SQL Audit | 336 |
12.2 | »Change Data Capture« | 348 |
12.3 | Extended Events | 359 |
12.3.1 | Zu protokollierende Extended Events definieren | 359 |
12.3.2 | änderungen aufzeichnen und auslesen | 361 |
12.3.3 | Event-Session beenden und löschen | 362 |
12.3.4 | änderungen an einer Tabelle mit Extended Events protokollieren? | 363 |
12.3.5 | Zusammenfassung Extended Events | 363 |
12.4 | Absicherung auf fachlicher Ebene | 364 |
12.4.1 | änderungen nur über gespeicherte Prozeduren | 364 |
12.4.2 | Trigger zur Protokollierung | 369 |
12.5 | Auditing in verschiedenen Szenarien | 373 |
13 | Andere bewährte Vorgehensweisen | 375 |
13.1 | Schutz vor Root-Kits | 375 |
13.2 | Fehlerbehandlung | 380 |
13.3 | Auf mehrere Pferde setzen | 381 |
14 | Umgang mit Meldungen über Sicherheitslücken | 383 |
A | Welche Rechte werden zum Debuggen benötigt? | 387 |
Stichwortverzeichnis | 397 |