Przekierowanie domen na podkatalog z separacją serwisu powinno działać bez względu na to jak został wywołany adres URL. Inaczej to stwarza możliwość nieuprawnionego dostępu dla użytkownika subkonta FTP, którym wydzielimy dostęp tylko do wybranego katalogu. Przykładowo, tworzymy katalog "/test123" (właściwie to "/home/serwerXXXXXXX/public_html/test123") i przekierujemy na niego jakąś domenę (załóżmy, że "example.com") z separacją serwisu. Jednocześnie zakładamy subkonto FTP z dostępem tylko do tego katalogu i nie chcemy aby ktoś miał dostęp poza ten katalog. Załóżmy, że użytkownik wrzuca przez swój FTP poniższy skrypt w pliku "_test.php": <?php echo implode("\r\n", glob('../*')); ?> Po wywołaniu "http://example.com/_test.php" w przeglądarce pojawią się tylko nazwy plików w katalogu bieżącym czyli separacja działa. Ale gdy do tego samego skryptu wejdziemy przez główny adres "http://serwerXXXXXXX.home.pl/test123/_test.php" to zobaczymy pliki z całego serwera!!! W ten sposób użytkownik może sobie omijać restrykcje i ma dostęp praktycznie wszędzie bo wystarczy, że wrzuci sobie odpowiedni skrypt. Równie dobrze zadziałają inne funkcje wejścia/wyjścia takie jak fopen. O kant kuli potłuc taką separację i subkonta! Do tego nie ma żadnego ostrzeżenia. Administrator działu IT zakłada subkonta FTP dla pracowników lub nawet partnerów zewnętrznych w przekonaniu, że ci nie będą mieli dostępu tam gdzie nie trzeba a tu takie JAJA!!!
Wystawiłem priorytetowe zgłoszenie do zespołu technicznego z prośbą o weryfikację oraz komentarz do sprawy QA-51786, odpowiem jak tylko poznam szczegóły.
No i? Separację masz dla example.com, a nie dla serwerXXXXXXX.home.pl. A to różnica. Nie chcesz, żeby adres w postaci http://serwerXXXXXXX.home.pl/test123/_test.php działał? Przekieruj serwerXXXXXXX.home.pl .htaccessem na jakiś podkatalog. Poza tym, taka forma separacji jest głównie w home.pl, u innych dostawców jej raczej nie doświadczysz.
@casar Po co istnieje opcja przekierowania domeny z separacją, skoro te same skrypty raz można wywołać z separacją a innym razem bez niej (w zależności jaką domenę podamy w adresie URL)? Po co istnieją subkonta FTP z wydzielonym katalogiem, skoro użytkownik wrzucając i wywołując odpowiednie skrypty (kiedy separacja nie działa) może gmerać po całym serwerze? Po to robi się jakieś opcje, żeby one działały. Zawsze. Inaczej to nie ma sensu.
Separacją zamykasz skrypty w katalogu, na który kieruje domena i wywołujesz je po adresie tej domeny. Adres serwerowy tego nie oferuje. I raczej logicznym jest, że po adresie serwera odwołasz się do dowolnego zasobu który jest gdzieś w katalogu, wystarczy znać ścieżkę. I tu znać, a poznać to jest różnica. Poza tym użytkownik, aby wywołać skrypt po adresie serwera, musiałby: - znać adres serwera - jak jest kumaty, to uzyska - znać pełną ścieżkę do katalogu, w którym jest skrypt, a tego nie uzyska przy połączeniu FTP na koncie z wydzielonym dostępem
@casar >Separacją zamykasz skrypty w katalogu, na który kieruje domena W takim razie dany katalog powinien być dostępny przez HTTP tylko poprzez daną domenę, gdzie działa separacja. Wywołania spod innych domen powinny być zablokowane a nie dozwolone z brakiem separacji. >znać adres serwera - jak jest kumaty, to uzyska Tak. Zakładamy, że użytkownik jest cwany, kumaty i kuty na 4 kopyta! Każdy szanujący się administrator musi tak zakładać. >znać pełną ścieżkę do katalogu, w którym jest skrypt Czy to nie zakrawa na security by obscurity lub tzw. "głebokie ukrycie"?
Poza tym domeny serwerXXXXXXX.home.pl chyba nie da się nigdzie przekierować ani wyłączyć, zawsze będzie pod nią dostępny cały serwer. To samo będzie gdy w URL-u zamiast domeny podamy adres IP (dotyczy serwerów z własnym IP).
Całkowicie bez sensu. A co jak domena padnie lub zmieni się jej konfiguracja (np. delegacja dla zewnętrznej domeny)?
Chyba się nie rozumiemy. Mam sobie katalog "xyz", do którego chcę udzielić dostępu przez FTP. Jak zatem zrobić aby użyszkodnik nie miał dostępu nigdzie indziej? Czy mamy jakieś eleganckie rozwiązania czy tylko tajna ścieżka katalogów?
Jak ustawisz konto FTP z dostępem do tego katalogu, to użytkownik tego konta nie wyjdzie powyżej tego katalogu, który będzie jego głównym, ale musisz mieć minimum Cloud Starter, bo w Cloud Basic nie ma możliwości ustawienia katalogu dla konta FTP.
Własnie o to chodzi w całym moim wątku, że może wyjść! Co prawda nie instrukcją CDUP protokołu FTP ale poprzez wrzucenie odpowiednio spreparowanego skryptu, którego użytkownik następnie uruchomi za pomocą przeglądarki po HTTP. Kiedy separacja nie działa, taki skrypt ma dostęp do całej struktury serwera i może używać wszelkich funkcji wejścia/wyjścia. Może listować katalogi funkcją glob(), otwierać pliki funkcją fopen(), kasować funkcją unlink() i wykonywać inne operacje.
Dodam, jakby ktoś nie wiedział, że do katalogu nadrzędnego odwołujemy się podając dwie kropki ("..") w ścieżce pliku w parametrze funkcji.
Dokładnie. Jeśli "domena.xy" ma separację to trik nie zadziała ale gdy wywołamy po adresie głównym "serwerXXXXXXX.home.pl/(...)/skrypt.php" to wtedy ten sam skrypt będzie miał pełny dostęp do wszystkiego.
No tak, ale jak pisałem użytkownik, aby wywołać skrypt po adresie serwera, musiałby: - znać adres serwera w postaci nazwa_uslugi.home.pl - znać pełną ścieżkę do katalogu, w którym jest skrypt Nazwa katalogu do którego wrzuca skrypt nie jest dla niego widoczna przez FTP, chyba, że sam mu ją podasz. Poza tym ścieżka może być dłuższa, co jeszcze bardziej utrudnia sprawę. I tak samo będzie u innych dostawców, bo zawsze lokalizacja wyższa ma dostęp do niższej. IMO to jest nie do wyłączenia.
@marcinek wydaje mi się że @casar idealnie podsumował to zgłoszenie. W tym scenariuszu patrząc z perspektywy administratora i znając dokładnie wszystkie ustawienia, możesz zrobić wszystko. Z perspektywy użytkownika konta FTP, jesteś ograniczony do konkretnego katalogu i nie znasz struktury serwera. "Opcja vserver działa w kontekście domeny. Jeśli znamy katalog w którym jest zamknięta domena i odwołamy się przez nazwaserwera.home.pl/katalog/ to działamy w kontekście ścieżki serwera (domeny serwer, a a nie domeny klienta) i to jest normalne. Można zablokować dostęp do katalogu w którym działa jdomena umieszczając odpowiedni wpis w .htacess w katalogu głownym serwera: https://pomoc.home.pl/baza-wiedzy/ograniczenie-dostepu-do-stron-ukryty-katalog Zablokuje to dostęp do katalogu z poziomu domeny serwera, a jednocześnie nie będzie brany pod uwagę przypadku wywołania z poziomu domeny z veserver gdyż nie jest wtedy czytany .htacess z katalogu głównego serwera lecz z katalogu domeny."
@Grzesiek I to jest chyba odpowiednie rozwiązanie. Nie trzymanie ścieżki nazw katalogów w tajemnicy ale właśnie plik .htaccess o treści "Access deny all". Po umieszczeniu takiego pliku w katalogu nadrzędnym do udostępnianego, faktycznie wywołanie po adresie głównym nie działa (403 Forbidden) a z separacją działa. Zawiodła jednak informacja. Nie każdy wpadnie na to jak działa .htaccess przy separacji i nie każdy będzie świadomy zagrożenia jeśli udostępni komuś subkonto FTP a ktoś pozna bezwględną ścieżkę. Temat jako taki można uznać za zamknięty ale trzeba dopracować dokumentację w dziale pomoc.home.pl.
Przedstawię ten wątek jako sugestię, być może zebrane tu informacje przydadzą się do stworzenia nowego rozwiązania albo poszerzenia jakiejś funkcjonalności, np. w beta.home.pl QABETA-1249