Přeskočit na hlavní obsah

Zabezpečení přístupu k databázi

Bezpečné dotazy

  • K SQL injection dochází, když je nedůvěryhodný uživatelský vstup dynamicky přidán do SQL dotazu nezabezpečeným způsobem (pomocí základního spojování řetězců)
  • SQL injection je jedním z nejnebezpečnějších bezpečnostních rizik
  • Může vést k odcizení, úpravě nebo vymazání celé databáze
  • Aplikace může být využita ke spouštění nebezpečných příkazů proti operačnímu systému nebo databázi
  1. Zabraňte vkládání nedůvěryhodného uživatelského vstupu do SQL příkazu
  2. Použijte techniku query parametrizace
  • Tato obrana by měla být aplikována na SQL, OQL i na uložené procedury

Upozornění

  • Některá místa v databázovém dotazu nelze parametrizovat (liší se v závislosti na databázi, např. názvy sloupců)
  1. Validujte a escapujte vstupní data při práci s dotazy a parametry
  • Některé parametrizované dotazy negativně ovlivňují výkon
  1. Testujte výkon dotazů, zejména těch složitých s rozsáhlými možnostmi
    • like klauzule nebo textové vyhledávání

Bezpečná konfigurace

  • Systémy pro správu databází jsou ne vždy dodávány dodávány v konfiguraci “secure by default”
  • Pro většinu běžných DBMS jsou k dispozici standardy, průvodci a benchmarky

Bezpečná autentizace

  1. Ověřujte veškerý přístup do databáze
    • Ověřování by mělo probíhat bezpečným způsobem a prostřednictvím zabezpečeného kanálu
  2. Zabezpečte credentials a udělejte je dostupnými pro použití

Bezpečná komunikace

  • Většina DBMS podporuje různé způsoby komunikace (API, services)
  • Ty mohou být zabezpečné (ověřené a šifrované) a nezabezpečné (neověřené nebo nešifrované)
  1. Používejte pouze možnost zabezpečenou komunikaci podle Protect Data Everywhere

Kam dál

Cheat sheety

Další