zabezpečení externího skriptu

trta911
Člen | 32
+
0
-

Na starším nette (tuším, že 2.4) používám pro tinymce nějaký filemanager. Pro to, aby se skript který je v adresáři www/skripty/tinymce/plugins/filemanager/upload.php načetl pouze pro přihlášené uživatele a abych zamezil nějakému nepovolenému uploadu mám ve skriptu následující:

$container = require(__DIR__ . '/../../../../../app/bootstrap.php');
$user = $container->getService('user');
if(!$user->isLoggedIn()) {
    $httpResponse = $container->getService('httpResponse');
    $httpResponse->redirect('/');
    exit;
}

To v nette 3 již není funkční protože se kontejmer vytváří v indexu a já za Boha nemůžu přijít na to, jak docílit stejné funkcionality.

Poradíte prosím?

Infanticide0
Člen | 64
+
+3
-

A proč by nemohlo fungovat to z www/index.php?

require 'path/to/vendor/autoload.php';
$configurator = App\Bootstrap::boot();
$container = $configurator->createContainer();
...
$user = $container->getService('user');
if(!$user->isLoggedIn()) {
    $httpResponse = $container->getService('httpResponse');
    $httpResponse->redirect('/');
    exit;
}
trta911
Člen | 32
+
0
-

Infanticide0 napsal(a):

A proč by nemohlo fungovat to z www/index.php?

require 'path/to/vendor/autoload.php';
$configurator = App\Bootstrap::boot();
$container = $configurator->createContainer();
...
$user = $container->getService('user');
if(!$user->isLoggedIn()) {
    $httpResponse = $container->getService('httpResponse');
    $httpResponse->redirect('/');
    exit;
}

To by se pak aplikovalo napříč celým projektem a to prívě nechci. Potřebuji takto pořešit jen ten jeden skript. V projektu jsou totiž i oblasti které musí zůstat dostupné bez potřeby být přihlášený

Martin Dřímal
Člen | 16
+
+1
-

trta911 napsal(a):
To by se pak aplikovalo napříč celým projektem a to prívě nechci. Potřebuji takto pořešit jen ten jeden skript. V projektu jsou totiž i oblasti které musí zůstat dostupné bez potřeby být přihlášený

tak tam přidáš kontrolu url..?

...
if(str_contains($_SERVER['REQUEST_URI'], '/filemanager/upload.php') && !$user->isLoggedIn()) {
    $httpResponse = $container->getService('httpResponse');
    $httpResponse->redirect('/');
    exit;
}
trta911
Člen | 32
+
0
-

Martin Dřímal napsal(a):

trta911 napsal(a):
To by se pak aplikovalo napříč celým projektem a to prívě nechci. Potřebuji takto pořešit jen ten jeden skript. V projektu jsou totiž i oblasti které musí zůstat dostupné bez potřeby být přihlášený

tak tam přidáš kontrolu url..?

...
if(str_contains($_SERVER['REQUEST_URI'], '/filemanager/upload.php') && !$user->isLoggedIn()) {
    $httpResponse = $container->getService('httpResponse');
    $httpResponse->redirect('/');
    exit;
}

ok, díky moc, to mě nenapadlo

Kamil Valenta
Člen | 762
+
+1
-

Jsi si jistý, že interpretace www/skripty/tinymce/plugins/filemanager/upload.php
prochází přes www/index.php ?