Tracy debugger pouze pro administrátora

scientific
Člen | 93
+
0
-

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
+
0
-

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 | 758
+
-1
-

@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).

h4kuna
Backer | 740
+
0
-

@m.brecher možná jsi nenašel název cookie v dokumentaci, protože se jmenuje tracy-debug a tenhle název je v dokumentaci uvedený.

Ozzrel
Generous Backer | 51
+
+1
-

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 | 758
+
0
-

@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 | 762
+
0
-

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 | 758
+
0
-

@KamilValenta

Tohle by si na produkci nikdo lajznout neměl.

Ano, souhlasím, ochrana cookie stačí jen u malého nedůležitého projektu, ale především by měl bez odkladu upgradovat na nejnovější verzi Nette.

Editoval m.brecher (18. 1. 2023 13:46)

m.brecher
Generous Backer | 758
+
0
-

@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:

https://blog.nette.org/…pusteni-kodu

scientific
Člen | 93
+
0
-

@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

m.brecher
Generous Backer | 758
+
0
-

@scientific

nejspíš stačí jen composer update a je hotovo?

Composer update ti zaktualizuje na nejvyšší dostupnou verzi, já bych použil:

composer require nette/application 2.3.14

Přesně podle návodu vždycky doporučenou setinkovou verzi ke stejné desetinkové ;)

dakur
Člen | 493
+
+1
-

@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)