Nedávno jsem se dočetl že v MySQL nelze realizovat řádkové zabezpečení. Trocha času googlováním mě ubezpečila, že se jedná o všeobecný názor, avšak kde je vůle tam je i cesta. :)
Pro rubustnější, rozsáhlé aplikace bude jistě lepší využít databázi, kde přímo řádkové zabezpečení implemetuje jako je Oracle, ale co dělat, když máme k dispozici jen MySQL?
Nebudu vypisovat své podrobné řešení, to by mohlo být sporné, zda je ideálně navržené, takže zůstanu u tautologie.
To tabulky, kterou jsem chtěl řádkově zabezpečit stačilo přidat sloupec identifikující uživatele s právem přístupu. Tento sloupec je třeba zabezpečit, naštěstí MySQL podporuje sloupcové zabezpečení, případně se to tá ještě pojistit jeho pohledy či triggery.
Při INSERTU či UPDATE známe jméno uživatele, tak můžeme pomocí triggeru uložit do řádku i majitele.
Při chráněném SELECTU pak stačí použít pohled s podmínkou aby přihlášený uživatel byl roven uživateli zapsanému v řádku. Kdo je právě přihlášen nám prozradí funkce User().
Takto se dá vytvořit jak jednoduchý systém řádkového zabezpečení, tak po pár rozšíření této databáze i docela výkoný, je však pravda, že pokud máme možnost upravovat MySQL, zpravidla máme možnost použít "nadupanější" databázi.
Žádné komentáře:
Okomentovat