Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MVC] Kontrola dostępu
Jarod
post 18.04.2008, 17:42:14
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


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
sobstel
post 18.04.2008, 17:59:42
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.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Jarod
post 18.04.2008, 18:45:31
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Cytat(sopel @ 18.04.2008, 16:59:42 ) *
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.

Cytat(sopel @ 18.04.2008, 16:59:42 ) *
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ę.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
bim2
post 18.04.2008, 21:19:17
Post #4





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Cytat(Jarod @ 18.04.2008, 17:45:31 ) *
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:
  1. <?php
  2. class User {
  3. public function __construct()
  4. {
  5. echo 'to sie i tak nie wyswietli';
  6. }
  7. }
  8. ?>

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ę winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
nrm
post 18.04.2008, 21:34:26
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.


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 18.04.2008, 22:07:15
Post #6





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(normanos @ 18.04.2008, 22:34:26 ) *
jw.

  1. <?php
  2. defined('SYSPATH') or die('No direct script access.');
  3.  
  4. //
  5. ?>


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ą.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
nrm
post 19.04.2008, 08:39:17
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" winksmiley.jpg krzywdy Ci to nie zrobi winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 19.04.2008, 23:56:26
Post #8





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(normanos @ 19.04.2008, 09:39:17 ) *
nie wszystkie pliki to klasy, są różne rzeczy. jak to mówią "strzeżonego pan bóg strzeże" winksmiley.jpg krzywdy Ci to nie zrobi 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...)


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
nrm
post 20.04.2008, 11:17:36
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 tongue.gif


--------------------
Go to the top of the page
+Quote Post
sobstel
post 20.04.2008, 11:18:13
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.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Sedziwoj
post 20.04.2008, 13:11:57
Post #11





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(normanos @ 20.04.2008, 12:17:36 ) *
w takim razie większość FW jest nieporządna i basta tongue.gif


To podaj mi łaskawie które korzystają, bo mi się nie chce przeglądać, a chyba wiesz co mówisz.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Jarod
post 20.04.2008, 14:12:52
Post #12





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Cytat(Sedziwoj @ 19.04.2008, 22:56:26 ) *
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.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
webdice
post 20.04.2008, 14:29:04
Post #13


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(Jarod @ 20.04.2008, 15:12:52 ) *
(...) Zostanę przy htaccess bo chyba najlepszy sposób.


Pamiętaj że nie na wszystkich serwerach jest dostęp do plików .htaccess.
Go to the top of the page
+Quote Post
nrm
post 20.04.2008, 15:58:48
Post #14





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(Sedziwoj @ 20.04.2008, 12:11:57 ) *
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 winksmiley.jpg w php to jest chyba przynajmniej 50 FW a nie chce mi się tego przeglądać winksmiley.jpg Nie mówie, że tak nalezy robić ale, że też jest taka mozliwość.


--------------------
Go to the top of the page
+Quote Post
Sedziwoj
post 20.04.2008, 16:43:14
Post #15





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(normanos @ 20.04.2008, 16:58:48 ) *
Tylko proszę bez argumentów, że te akurat są *, albo, że to mało winksmiley.jpg w php to jest chyba przynajmniej 50 FW a nie chce mi się tego przeglądać 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ć.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
nrm
post 20.04.2008, 16:53:05
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 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 winksmiley.jpg a do tego dorabiasz jakieś zakręcone teorie.


--------------------
Go to the top of the page
+Quote Post
bim2
post 20.04.2008, 17:02:08
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 snitch.gif


--------------------
Go to the top of the page
+Quote Post
nrm
post 20.04.2008, 17:20:06
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.


--------------------
Go to the top of the page
+Quote Post
Jarod
post 20.04.2008, 19:27:58
Post #19





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Cytat(webdicepl @ 20.04.2008, 13:29:04 ) *
Pamiętaj że nie na wszystkich serwerach jest dostęp do plików .htaccess.


Wiem, zdaje sobie sprawę. Ale pisząc aplikację wiem wcześniej na jakim serwerze będzie umieszczona.
pzdr


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 02:04