Tracy debugger pouze pro administrátora
- scientific
- Člen | 94
Ahoj všem, prosím si o radu, na serveru používám reverzní proxy, takže restrikce na IP adresu nedává smysl. Informace o verzích nette a jeho komponent na konci této zprávy.
Dalo by se prosím použít v souboru bootstrap něco jako následující?:
if($_SESSION["username"]=='admin'){
$configurator->setDebugMode(true);
}
Zkoušel jsem následující, ale nic nefungovalo:
// if ($this->user->isLoggedIn()) {
// $userId = $this->user->getId();
// }
// $container->addService('user', function ($container) {
// $user = new Nette\Security\User($container->getByType(Nette\Security\IUserStorage::class));
// return $user;
// });
// if ($container->getService('user')->isLoggedIn()) {
// $userId = $container->getService('user')->getId();
// // do something with the user id
// }
// $user = $container->getByType(Nette\Security\User::class);
// $userId = $user->getId();
// $user = $container->getService('user');
// $userId = $user->getId();
// $user = $this->getUser();
// $userId = $user->getId();
Verze:
name : nette/nette
versions : * v2.3.2
requires
latte/latte 2.3.2
nette/application 2.3.3
nette/bootstrap 2.3.1
nette/caching 2.3.2
nette/component-model 2.2.1
nette/database 2.3.2
nette/deprecated 2.3.0
nette/di 2.3.3
nette/finder 2.3.0
nette/forms 2.3.2
nette/http 2.3.1
nette/mail 2.3.0
nette/neon 2.3.1
nette/php-generator 2.3.0
nette/reflection 2.3.0
nette/robot-loader 2.3.0
nette/safe-stream 2.3.0
nette/security 2.3.0
nette/tokenizer 2.2.0
nette/utils 2.3.1
tracy/tracy 2.3.2
Děkuji Vám za rady či tipy, jak by se to dalo zařídit.
- dakur
- Člen | 493
Jestli ti jde o tu session, tak to bude spíš něco takového (viz session):
if($_SESSION["__NF"]["DATA"]["username"]=='admin'){
$configurator->setDebugMode(true);
}
Byl bych s tím ale hodně opatrný – tracy dumpuje do stránky veškeré parametry z configu, tedy i credentials k databázi. Na debugování na produkci se hodí jiný přístup než na localhostu.
Editoval dakur (18. 1. 2023 11:22)
- m.brecher
- Generous Backer | 871
@scientific
takže restrikce na IP adresu nedává smysl
Debug mode se dá omezit i pomocí cookies uložených do prohlížeče https://tracy.nette.org/cs/guide#…, pokud používáš tracy v rámci nette tak se ta cookie jmenuje nette-debug (není v dokumentaci).
- Ozzrel
- Generous Backer | 54
V dokumentaci pro Nette to je https://doc.nette.org/…on/bootstrap#…
V dokumentaci pro samostatné Tracy je tracy-debug
jak
jsi psal.
No nicméně jsem čekal, že mu spíš řeknete proč používá Nette s bezpečnostní dírou :)
- m.brecher
- Generous Backer | 871
@h4kuna
možná jsi nenašel název cookie v dokumentaci, protože se jmenuje tracy-debug a tenhle název je v dokumentaci uvedený
Ano, souhlas, název cookie tracy-debug uvedený v dokumentaci se používá v projektu s Tracy, kde NENÍ Nette Framework, v projektu, kde JE Nette Framework se používá název nette-debug. Plánuji to co nejdříve do dokumentace doplnit.
- Kamil Valenta
- Člen | 820
m.brecher napsal(a):
@scientific
takže restrikce na IP adresu nedává smysl
Debug mode se dá omezit i pomocí cookies
To sice ano, ale v momentě, kdy mu reverzní proxy nepředá původní IP adresu a má tedy celý svět jen za jednou jedinou, pak celý debug mode bude stát jen na té hodnotě cookie. A ta hodnota může uniknout… Tohle by si na produkci nikdo lajznout neměl.
- m.brecher
- Generous Backer | 871
@scientific
nette/application 2.3.3
Z výpisu verzí vyplývá, že by Jsi měl bez zbytečného odkladu upgradovat podle návodu jednotlivé balíčky nette na setinkové verze podle návodu, kupříkladu nette/application 2.3.3 upgraduj na nette/application 2.3.14
Návod máš zde:
- scientific
- Člen | 94
@dakur: Děkuji, vypadá to skvěle, ale nefunguje to.
Zkusil jsem to takto:
if($_SESSION["__NF"]["DATA"]["username"]=='admin' || $_SESSION["__NF"]["META"]["username"]=='admin'){
$configurator->setDebugMode(true);
}
@ostatní:
Ta IP adresa není ani statická, přes cookies se mi to nezdá správné, kor když je to kombinace cookies a IP adresy.
Off-topic ohledne poznámek k verzi Nette:
O bezpečnostní hrozbě samozřejmě vím, tenkrát jsem pochopil jak funguje a upravil konfiguraci PHP tak, aby ji nebylo možné provést. Setinkovou aktualizaci zvážím, protože chápu, že jen takovéto minoritní setinkové aktualizaci mi to nijak nerozbijí, abych se nemusel topit v jakých traits smart objektech a co já vím co ještě. Doufám, že to chápu správně, pokud ano, tak taková to aktualizace 2.3.3 → 2.3.latest je naprosto banální prkotina, nejspíš stačí jen composer update a je hotovo? :-D
- dakur
- Člen | 493
@scientific Zkus být trochu aktivní. :) Co znamená „nefunguje“
moc nevím, ale můžeš přece napsat var_dump($_SESSION)
(na
localhostu, tohle totiž něco vypíše nehledě na debug mode) a podívat se,
jak je ten klíč správně.
Mimochodem, když napíšeš, čeho se vlastně snažíš docílit, možná ti i někdo poradí, jak to udělat bezpečněji.
Editoval dakur (18. 1. 2023 16:41)