![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jedno krótkie pytanie.
Jak się bronicie w aplikacjach MVC przed niezalogowanym userem, który nie ma dostępu do skryptu np. user.php a próbuje odpalić skrypt ręcznie z pominięciem kontrolera? Czy jedynym sensownym rozwiązaniem (aby w widoku nie paskudzić w kodzie) jest htaccess z deny from all? pzdr |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Deny from all to zawsze dobry pomysl, tak samo jak trzymanie plikow powyzej głównego katalogu WWW.
Tak naprawdę do końca nie rozumiem Twojego problemu. W implementacjach MVC, frameworkach, itp. zazwyczaj wszystko przechodzi przez index.php, a wszystko to co się może wykonać, jest zamknięte w klasach, więc bez jawnego odpalenia klasy (utworzenia obiektu, itp.) nic się na stanie. Mówiąc inaczej, jak w pliku user.php mam klase User, to co mnie obchodzi, że ktoś to odpali bezpośrednio? A jeśli chodzi o kontrole dostępu, to w MVC najlepiej użyć filtrów, a dokładnie jednego filtra bezpieczeństwa, który decyduje o tym czy ktoś ma dostęp do akcji/kontrolera czy też nie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Deny from all to zawsze dobry pomysl, tak samo jak trzymanie plikow powyzej głównego katalogu WWW. Tak naprawdę do końca nie rozumiem Twojego problemu. W implementacjach MVC, frameworkach, itp. zazwyczaj wszystko przechodzi przez index.php, a wszystko to co się może wykonać, jest zamknięte w klasach, więc bez jawnego odpalenia klasy (utworzenia obiektu, itp.) nic się na stanie. Mówiąc inaczej, jak w pliku user.php mam klase User, to co mnie obchodzi, że ktoś to odpali bezpośrednio? Masz rację, ale jeśli nie wyłączysz wyświetlania błędów na serwerze to zobaczysz erory i warningi. Ja wyłączam ale uważam, że i tak apache nie powinien pozwolić odpalić takiego pliku. A jeśli chodzi o kontrole dostępu, to w MVC najlepiej użyć filtrów, a dokładnie jednego filtra bezpieczeństwa, który decyduje o tym czy ktoś ma dostęp do akcji/kontrolera czy też nie. I tak robię. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Masz rację, ale jeśli nie wyłączysz wyświetlania błędów na serwerze to zobaczysz erory i warningi. Ja wyłączam ale uważam, że i tak apache nie powinien pozwolić odpalić takiego pliku. I tak robię. Jakie warningi, przykladowo poniższy kod jeśli go uruchomisz nic nie zrobi:
Nigdzie nie wywołujesz klasy, ona sobie jest i już. W każdym pliku akcji/modelu/widoku trzymam klasę a w index.php mam Controller->execute(); i metoda execute włącza odpowiednią klasę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
jw.
<?php defined('SYSPATH') or die('No direct script access.'); // ?> wszystko leci przez index. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
jw.
wszystko leci przez index. A jaki jest sens tego? Przecież już zostało napisane, że może sobie user otwierać pliki i tak nic nie zobaczy. Do tego jeżeli to nie są błędy składniowe, a jedynie w kodzie klas, to i tak PHP ich nie kompiluje, więc się nie wyświetlą. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
nie wszystkie pliki to klasy, są różne rzeczy. jak to mówią "strzeżonego pan bóg strzeże" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) krzywdy Ci to nie zrobi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
nie wszystkie pliki to klasy, są różne rzeczy. jak to mówią "strzeżonego pan bóg strzeże" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) krzywdy Ci to nie zrobi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Jak piszesz porządnie to masz tylko klasy, do tego zabezpieczasz .htaccess a nie w ten dziwny, obciążający wykonanie sposób. I moim zdaniem to jedyny sensowny sposób zabezpieczania przed dostępem z zewnątrz. (oczywiście jeszcze mamy ograniczenia dostępu do pliku...) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
w takim razie większość FW jest nieporządna i basta (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Właściwie błędy się pojawiać jeśli mamy dziedziczenie albo implmentujemy interfejsy (np. class Klasa extends Rodzic { }). Koniec końców dyrektywa Deny, albo trzymania ponad główny katalogiem WWW dla mnie załatwia sprawę - jest to zreszą logiczne, w obrębie DOC_ROOT powinno być przecież tylko to, co może być wywołane z poziomu WWW.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
w takim razie większość FW jest nieporządna i basta (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) To podaj mi łaskawie które korzystają, bo mi się nie chce przeglądać, a chyba wiesz co mówisz. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jak piszesz porządnie to masz tylko klasy Ja wszędzie stosuję klasy, oprócz kodu JS i widoku. U mnie widok to szablon, który wyświetla dane - moim zdaniem nie ma sensu robić klasy, która będzie wyświetlała htmla - a wtedy będą błędy. Dziękuje wszystkim za odpowiedzi. Zostanę przy htaccess bo chyba najlepszy sposób. |
|
|
![]()
Post
#13
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
To podaj mi łaskawie które korzystają, bo mi się nie chce przeglądać, a chyba wiesz co mówisz. Mi też się nie chce, ale proszę: http://dev.ellislab.com/svn/CodeIgniter/tr...ies/Session.php http://trac.kohanaphp.com/browser/trunk/sy...ies/Session.php http://rapideframework.googlecode.com/svn/ Tylko proszę bez argumentów, że te akurat są *, albo, że to mało (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) w php to jest chyba przynajmniej 50 FW a nie chce mi się tego przeglądać (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Nie mówie, że tak nalezy robić ale, że też jest taka mozliwość. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tylko proszę bez argumentów, że te akurat są *, albo, że to mało (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) w php to jest chyba przynajmniej 50 FW a nie chce mi się tego przeglądać (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Nie mówie, że tak nalezy robić ale, że też jest taka mozliwość. Tia, szczególnie ten ostatni przydatny. Przecież nie zaprzeczam, że jest taka możliwość, tylko że bezsensowna. A skoro nie mogłeś podać od razu, to znaczy, że nie wiedziałeś, tylko powtarzałeś czyjeś zdanie (lub co gorsza, wymyśliłeś, na podstawie jednego FW), a o to mi chodziło, nie to że nie jest stosowane, ale o to że napisałeś, że jest często stosowane, skoro nie umiesz potwierdzić, to znaczy że to było gadanie aby gadać. A podważałeś moje zdanie w ten sposób, więc Twoje argumenty można wywalić do kosza, teraz nie ważne czy znajdziesz nawet 100 FW z tym, bo chodzi o to, że pisząc nie widziałeś jaki jest stan faktyczny. No dobra, kończę temat, bo chyba nie ma co kontynuować. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
tak zakręciłeś, że cholera wie o co Ci chodzi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) jak nie mogłem podać od razu skoro to z pamięci zrobiłem?!? (wszystkie powyższe FW używałem więc pamiętałem, że tam coś takiego jest). Dostałeś 3 i jeszcze Ci mało (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) a do tego dorabiasz jakieś zakręcone teorie.
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Koledzy nie kłóćcie się. Każdy ma swoje zdanie.
Moim zdaniem jednak kolega @Sedziwoj ma rację. Jest to niepotrzebne, jeśli w plikach znajdują się same klasy. To że wywali że nie ma danej klasy (przez extends) to nic się nie stanie, chyba, że boisz się, że podwiną Ci nazwę tej wspaniałej klasy (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Nie stawiajcie mnie w roli strony "konfliktu" (strasznie nie lubię sytuacji kiedy na siłę ktoś umieszcza mnie w nieprawdziwym kontekście aby udowodnić swoje racje). Pokazałem tylko, że tak można, i że kilka FW tego używa (widziałem to też w kilku OS CMS i forach). Temat jest ciekawy - można zapytać twórców np. Kohany dlaczego stosują takie rozwiązanie - może mają coś ciekawego do powiedzenia.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 05:06 |