Chci geek triko! Chci geek triko!
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"
Avatar
Andree Pyro
Redaktor
Avatar
Andree Pyro:21. října 13:51

Ahoj, je v Symfony nějaká možnost jednoduše zašifrovat data pomocí klíče před vložením do databáze? Jednoduše, aby byla data v databázi zašifrována. Například přidáním @Encrypt k proměnné v modelu

/**
     * @var string Jméno uživatele.
     * @ORM\Column(type="string", length=255)
     */
    private $firstname;

Zkusil jsem: Našel jsem mnoho různých frameworků. Vytvořil jsem si i šifrování vlastní, ale to zbytečně zpomaluje server.

Chci docílit: Rád bych se vyhnul použitím dalších frameworků. Zajímá mne, zda tato funkce v Symfony existuje. Něco jako

AES_ENCRYPT(str, key_str);

v MySQL. Posílání klíče přímo do databáze problém není, protože je na stejném serveru.

Díky! :)

Odpovědět 21. října 13:51
Boj sa tých, ktorí sú ticho. Oni sú totiž tí jediní, ktorí skutočne myslia.
Avatar
Jirka Jr
Člen
Avatar
Odpovídá na Andree Pyro
Jirka Jr:21. října 16:45

koukám, že šifrování celé databáze má mysql až v placené verzi ...

Symfony ... tady píšou o nějakém bundle i o zádrhelích
https://stackoverflow.com/…crypt-column

tady je další bundle:

https://github.com/…rine-encrypt

a budou asi i další ... osobně nemám zkušenost ani s jedním

php má modul mcrypt .... pokud budes sifrovat jen jeden sloupec, tak staci

viz: https://www.bing.com/search?…

další možnost může být použití PostgreSQL, ježto by měla šifrovat zadarmo, co vím a doctrine pro ní má modul

Editováno 21. října 16:48
 
Nahoru Odpovědět 21. října 16:45
Avatar
Andree Pyro
Redaktor
Avatar
Odpovídá na Jirka Jr
Andree Pyro:21. října 16:57

Přesně ten článek o Symfony jsem četl a o moc moudřejší z toho nejsem. Všude se odkazuje na frameworky a mnohdy se ještě zpochybňuje jejich funkčnost. Není nějaká jednoduchá možnost, jak šifrování nastavit, ať už přímo v Symfony nebo MySql?

Nahoru Odpovědět 21. října 16:57
Boj sa tých, ktorí sú ticho. Oni sú totiž tí jediní, ktorí skutočne myslia.
Avatar
Odpovídá na Andree Pyro
Uživatel sítě :21. října 18:06

Mcrypt je dobré nasměrování jak praví Jirka Jr, ale bohužel zastaralé.

Místo toho by ti mělo bohatě stačit: http://php.net/…-encrypt.php

Nahoru Odpovědět 21. října 18:06
Chybami se člověk učí, běžte se učit jinam!
Avatar
Jirka Jr
Člen
Avatar
Odpovídá na Andree Pyro
Jirka Jr:21. října 19:17

na úrovni databázového stroje:

jo, sorry, ještě jsem zapoměl na existenci mariadb, což jest fork mysql

ta by měla mít šifrování zadarmo na úrovni tabulek nebo tak nějak

https://mariadb.com/…-encryption/

na úrovni symfony:

"Všude se odkazuje na frameworky a mnohdy se ještě zpochybňuje jejich funkčnost" .... tak to ve světě opensource chodí .... komu se to vyplatí, zaplatí si podporu ... ostatní se vrtaj ve staženém kódu sami a po nějaké době praxe se nechají na tuto činnost najmout :-)

vyzkoušej ty dva bundly na nějakých dummy datech, jak to bude nebo nebude fungovat podle tvych predstav, případně se mrkni do kódu toho bundlu a sám uvidíš ...

taky se kolikrát orientuju podle toho, jak moc je o ten bundle zájem a jak aktivní je vývoj ... na githubu je to vidět v grafech, případně bugy a jejich fixy v issues, historie verzi, pochopitelnost dokumentace a tak

na úrovni db dotazů:

jinak bacha, pokud chceš šifrovat data vlastními silami a ne transparentně databázovým enginem, tak se připrav na to, že nemůžeš udělat

SELECT jmeno, prijmeni, ulice, mesto WHERE mesto LIKE 'Praha%'

minimalne v tom WHERE musi byt

WHERE AES_DECRYPT(mesto, klic) LIKE 'Praha%'

takže si dobře rozmysli, co skutečně je tajné a musí bejt nutně zašifrovaný a ostatní nech radsi plaintext

a taky tu vidis, ze zapracovat neco takoveho do frameworku Doctrine, aby se vsude (de)sifrovalo, kdekoli se s tim sloupcem pracuje (podminky, joiny, group by a tak), neni jen tak to zasifrovat a hotovo

Editováno 21. října 19:18
 
Nahoru Odpovědět 21. října 19:17
Avatar
Jirka Jr
Člen
Avatar
Odpovídá na Andree Pyro
Jirka Jr:21. října 19:42

jo ještě ...

vypada to, ze vsechny ty bundly jen zasifruji pred ulozenim a desifruji po vyselectovani ... žádná plnohodnotná transparentní práce se sloupcem .... otazka je, jestli by to vubec slo stoprocentne naimplementovat do vsech featur Doctrine a kolik by to dalo prace

takze pokud chces sifrovat vsechno, tak urcite transparentne na administrativni urovni mariadb

a pokud jen treba heslo a rodne cislo uzivatele v tabulce users, tak nejaky z tehle bundlu

https://packagist.org/…crypt-bundle

tady pisou, ze je podporovan jen Laravel ... tomu moc nerozumim ... myslim, ze by to melo byt jedno, kdyz je to na urovni doctrine
https://github.com/…rine-encrypt

https://github.com/…rine-encrypt

pripadne se muzes vykaslat na ORM frameworky a vyrabet si sql dotazy sam a pouzivat AES_ENCRYPT/DECRYPT

 
Nahoru Odpovědět 21. října 19:42
Avatar
Andree Pyro
Redaktor
Avatar
Odpovídá na Jirka Jr
Andree Pyro:22. října 17:48

Popravdě jsem z toho celého zmatený. Navíc jsem právě zjistil, že vlastně používám celou dobu MariaDb a nikoliv MySql :D

Sepíšu si to:

Šifrování před zápisem nebo po čtení dat z databáze nepoužiji. Při větším množství by šlo o časově náročné operace. Navíc bych při psaní kódu mohl vytvořit mnoho potenciálních rizik.

Na úrovni db dotazů také ne. Resp. ne nyní :D Musel bych se v Symfony dost vrtat, a i když nepochybuji o tom, že by mi to dalo mnoho, aktuálně hledám rychlé a funkční řešení. Možná nakonec zkusím stáhnout framework. Psát vlastní dotazy se mi už kvůli sql injection a zas další práci také moc nechce.

Každopádně jsem právě našel MyDiamo, což vypadá jako velmi solidní nástroj. Až se zas dostanu k pc, zkusím implementovat a napíšu výsledek :)

Nahoru Odpovědět 22. října 17:48
Boj sa tých, ktorí sú ticho. Oni sú totiž tí jediní, ktorí skutočne myslia.
Avatar
Jirka Jr
Člen
Avatar
Odpovídá na Andree Pyro
Jirka Jr:23. října 16:05

To Mydiamo vypadá zajímavě, o to víc, že to valí na různých databázových platformách

 
Nahoru Odpovědět 23. října 16:05
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.