Diskuze: Symfony / Doctrine - šifrování databáze, AES_ENCRYPT
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 8 zpráv z 8.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


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
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?
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
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
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
Popravdě jsem z toho celého zmatený. Navíc jsem právě zjistil, že
vlastně používám celou dobu MariaDb a nikoliv MySql 
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í
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 
To Mydiamo vypadá zajímavě, o to víc, že to valí na různých databázových platformách
Zobrazeno 8 zpráv z 8.