[[oktatas:adatbázis-kezelés|< Adatbázis-kezelés]]
====== Adatbázis-biztonság ======
* **Szerző:** Sallai András
* Copyright (c) 2015, Sallai András
* Szerkesztve: 2015, 2019
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Az adatbázis biztonságának rétegei =====
* hozzáférés vezérlés
* auditálás
* azonosítás
* titkosítás
* integritás ellenőrzése
* mentés és visszaállítás
* az alkalmazás biztonsága
{{:oktatas:adatbázis-kezelés:adatbazis_biztonsag_retegei.png|}}
===== Hozzáférés vezérlés =====
==== Jogok meghatározása ====
GRANT jogok
ON objektum_neve
TO szereplo_neve;
==== Sorszintű biztonság ====
CREATE VIEW nézet_neve AS
SELECT *
FROM tábla_neve
WHERE mező_neve = user;
==== Adatbázis elérés ====
Az adatbázis elérés szabályozása a hálózaton.
* adatbázis beállítások - my.ini vagy my.cnf
* tűzfalbeállítások - Netfilter, [[http://dev.mysql.com/downloads/mysql-proxy/|Mysql-proxy]]
{{:oktatas:adatbázis-kezelés:mysql_netfilter.png|}}
{{:oktatas:adatbázis-kezelés:mysql_proxy.png|}}
===== Auditálás =====
==== Naplózás ====
Minden tevékenységet naplózunk és rendszeresen ellenőrzünk.
* kilépés/belépés
* változtatások
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
expire_logs_days = 10
/var/log/mysql/mysql.log
==== PHPMyAdmin ====
* Kiszolgáló: localhost -> Állapot fül -> Felügyelet gomb (stb)
===== Azonosítás =====
| felhasználónév | jelszó |
fontos: jelszó erősség
követelmény (tartalmazzon):
* szám
* kis- és nagybetű
* nem betű és nem szám karakter
* legalább 10 karakter hosszú
Hozzáférés:
* A programnak külön felhasználója legyen, amely MySQL felhasználó.
* A felhasználóknak külön hozzáférés, amely NEM MySQL felhasználó.
{{:oktatas:adatbázis-kezelés:mysql_felhasznalok.png|}}
A programnak csak **usage** hozzáférést adunk.
===== Integritás, Titkosítás =====
Adatintegritás a következő algoritmusok biztosítják:
* AES
* RC4
* 3DES
* MD5
* SHA1
* SHA512
* SSL
* TLS
===== Mentés és visszaállítás =====
Mentés:
mysqldump -u root -p[titok] [adatbazinev] > mentesfajnev.sql
mysqldump --all-databases > mysql-mentes.sql
* PHPMyAdmin
Visszaállítás:
mysql -u root -p[titok] [adatbazisnev] < mentesfajlnev.sql
* PHPMyAdmin
Mentés szerveren:
* rsync
A mentés lehet:
* teljes mentés
* inkrementális mentés
A crontab rendszerrel időzítjük.
===== Alkalmazások biztonsága =====
==== SQL injekció ====
Ellenőrizzük a bekért adatmezőket, mielőtt adatbázisban rögzítjük azokat.
Egy az alábbihoz hasonló bevitellel, a jelszavak megkerülhetők. Ezt nevezzük
SQL injekciónak:
a" or 1 = 1 "
Ennek megelőzésére egyik lehetőség a mysqli használata esetén a
mysqli_real_escape_string() függvény használata:
$user = mysqli_real_escape_string($con, $data['user']);