Tracy v PHP projektu – jak nastavit skrytí citllivých údajů v dumpech?
- m.brecher
- Generous Backer | 873
Ahoj,
skrytí přihlašovacích údajů k databázi, popř. osobních dat uživatelů musí být kvalitně zajištěno a to i v dump() výpisech Tracy.
Nette má pro toto řešení a v konfiguraci se nastavuje:
tracy:
keysToHide: ['password', 'username', ...]
Když mám v projektu jenom PHP a Tracy bez Nette tak předpokládám, že si místo konfigurace budu muset napsat nějaký vlastní kód – pokud to jde.
Neporadil by někdo jak na to, v dokumentaci jsem pátral, ale nic jsem nenašel.
Díky předem.
- m.brecher
- Generous Backer | 873
@MarekBartoš
Ahoj,
tak jsem to vyzkoušel, citlivé údaje mám v poli $credentials a \Tracy\Debugger::$keysToHide v tomto kódu password neskryje:
Citlivé údaje do databáze mám uloženy takto:
class Config
{
private array $credentials;
.....
}
Debugger::$keysToHide[] = ['password'];
......
bdump(Debugger::$keysToHide) // ověření, že password je nastaven jako hidden
bdump($config) // vypíše credentials: array ... 'password' => 'abcdef'
Takhle to skrývání tedy nefunguje a zkoušel jsme to uložit i do property $user. Potřeboval bych nějak Tracy pobídnout, aby $keysToHide aplikovala na třídu Config na propertu $credentials – to asi nepůjde že?
Je nějaká konvence, na jaké třídy/property se Debugger::$keysToHide aplikuje ?
Editoval m.brecher (22. 3. 2023 19:50)
- dms
- Člen | 94
Kdyť je to vše v dokumentaci zde https://tracy.nette.org/cs/configuring#… Předpokládám že pokud přidáváš do pole tak jenom takto:
Debugger::$keysToHide[] = 'password';
- m.brecher
- Generous Backer | 873
@dms
Dík za upozornění, to jsem napsal špatně, to ano, ale i když to napíšu syntakticky správně, tak to stejně password neskrývá:
Debugger::$keysToHide[] = 'password'; // password se neskryje
Debugger::$keysToHide = ['password']; // ani takhle - password se neskryje
Takže to vypadá, že se to dá aplikovat jenom v projektech, kde je Nette a kde jsou vestavěné třídy ve kterých se to použije (User?)
- Marek Bartoš
- Nette Blogger | 1275
Nainstaluj si phpstan. Dostaň se aspoň na level 5. Nebudeš pak narážet s takovými drobnostmi jako je nesprávný typ.
Btw, od PHP 8.2 https://wiki.php.net/…_back_traces
A od Tracy 2.10 lze použít obdobu
v podobě /* sensitive */
Takže to vypadá, že se to dá aplikovat jenom v projektech, kde je Nette
Ne, jen se to nepoužívá pro dump(). Ten se nikdy neukládá, máš ho vykreslený jen když máš zapnutý debug mód. Takže by to ani moc nedávalo smysl.
Editoval Marek Bartoš (22. 3. 2023 20:10)
- m.brecher
- Generous Backer | 873
@MarekBartoš
Ne, jen se to nepoužívá pro dump(). Ten se nikdy neukládá, máš ho vykreslený jen když máš zapnutý debug mód. Takže by to ani moc nedávalo smysl.
Jak se znám, tak při nějakých problémech na produkci jsem schopen tam nechat zapnutý debug mód. Takže odstranění polí ‚password‘ z dumpů je ochrana před nejhorším a sice malý ale vítaný příspěvek k zabezpečení aplikace.
Nainstaluj si phpstan. Dostaň se aspoň na level 5. Nebudeš pak narážet s takovými drobnostmi jako je nesprávný typ.
Ano, souhlasím.
- Marek Bartoš
- Nette Blogger | 1275
Nezapínej debug mód na produkci nikdy pro všechny, přinejmenším přes cookie. Jde to udělat i tak, aby se ti debug zapnul jen pro tebe na kliknutí v administraci https://github.com/…cs/README.md#…