Omezení oprávnění databáze pomáhá zabránit útokům SQL Injection (SQLI) především snížením potenciálního poškození, které může útočník způsobit, pokud se jim podaří využít zranitelnost. Tento přístup je založen na principu nejméně privilegia, což znamená poskytovat uživatelům nebo aplikačním účtům pouze minimální oprávnění nezbytná k plnění jejich úkolů a nic víc.
Zde je podrobné vysvětlení toho, jak pomáhá omezující oprávnění:
** 1. Omezuje rozsah akcí, které může útočník provést
Pokud má aplikační nebo uživatelský účet připojený k databázi pouze přístup pouze k konkrétním tabulkám pouze k konkrétním tabulkám, útočník, který využívá injekci SQL prostřednictvím tohoto účtu, nemůže upravit, odstranit nebo vložit data. Toto zadržování omezuje „poloměr výbuchu“ útoku a brání korupci dat nebo neoprávněné změny [3] [9]. Pokud například účet potřebuje pouze spustit vybrané dotazy, neměla by mít oprávnění vložení, aktualizace, odstranění nebo správu.
** 2. Zabraňuje neoprávněnému přístupu dat nad nutnost
Omezením oprávnění databáze pouze na nezbytné tabulky a operace nemohou útočníci získat přístup k citlivým datům mimo rozsah legitimních potřeb aplikace. To znamená, že i když je injekce SQL úspěšná, schopnost útočníka extrahovat nebo manipulovat s údaji je omezena na to, k čemu má kompromitovaný účet přístup [1] [2] [7].
** 3. Limity využívání nebezpečných funkcí databáze
Některé funkce databáze, jako je provádění příkazů operačního systému nebo provozování neomezených uložených postupů, lze využít, pokud jsou oprávnění příliš široká. Omezení oprávnění deaktivuje nebo omezuje přístup k těmto vlastnostem, snižuje povrch útoku pro injekci SQL a související exploity [2] [9].
** 4. Snižuje riziko eskalace privilegií
Pokud uživatel databáze běží s vysokými oprávněními (např. Admin nebo DBA role), může úspěšná injekce SQL vést k plné kontrole nad databází, včetně vytváření nebo pádu tabulek nebo dokonce provádění příkazů na serveru. Omezení oprávnění brání útočníkům v eskalaci jejich přístupu nad rámec toho, co aplikace legitimně vyžaduje [1] [6] [9].
** 5. Podporuje do hloubky obranu
Zatímco omezující oprávnění sama oprávnění nezabrání injekci SQL, jedná se o kritickou vrstvu obrany, která pracuje spolu s ověřením vstupu, parametrizovaných dotazů, uložených postupů a firewall webových aplikací. Tento vrstvený přístup zajišťuje, že i když jedna kontrola selže, jiní pomáhají obsahovat útok [3] [7].
Stručně řečeno, omezení oprávnění databáze snižuje potenciální dopad injekce SQL tím, že zajišťuje, že kompromitované účty nemohou provádět škodlivé opatření nad rámec jejich zamýšleného rozsahu. Toto zadržování pomáhá předcházet ztrátě dat, neoprávněné modifikaci dat a eskalaci privilegií, což činí injekční útoky SQL méně škodlivé a snadnější správu [1] [2] [3] [6] [9].
Citace:
[1] https://cheatsheetseries.owasp.org/cheatsheets/sql_injection_prevention_cheat_sheet.html
[2] https://www.esecurityPlanet.com/thereats/how-to-prevent-sql-njection-atacks/
[3] https://www.legitsuecurity.com/aspm-kingledge-base/how-to-prevent-sql-injection
[4] https://users.soe.ucsc.edu/~eaugusti/archive/365-spring16/365-files/lectures/365-LEC14-security.pdf
[5] https://www.reddit.com/r/sql/comments/1c5m63s/sql_injection_prevention_help/
[6] https://security.stackexchange.com/questions/90247/sql-injection-atack-why-not-wust-adjust-ppermissions
[7] https://www.cloudflare.com/learning/security/thereats/how-to-prevent-sql-injection/
[8] https://stackoverflow.com/questions/1263218/if-my-database-user-is-read-pouze--ied-to-worry-out-sql-injection
[9] https://www.enterprisedb.com/blog/protecting-against-sql-injection