Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX] zabezpieczenie RewriteRule
Forum PHP.pl > Forum > Przedszkole
!*!
Dzięki RewriteRule odwołuję się ajaxem do plików php ze strony index.php ... Jak mógłbym zabezpieczyć wejście bezpośrednie z użyciem RR w adresie? Obecnie w pliku tym który prowadzi z RR sprawdzam czy adres się zgadza (index.php = stronaglowna w RR) Jednak czy istnieje inna możliwość?

  1. <?php
  2. $domena = $_SERVER['HTTP_REFERER'];
  3. if ($domena != 'http://domena/stronaglowna'){    echo'nie jest'; //przekierowanie }
  4. ?>


Po prostu chciałbym ograniczyć przeglądanie tych plików bezpośrednio, mają one być tylko dostępne z poziomu index.php/zalogowania.
luniak
możesz w oparciu o sessje sprawdzać czy zapytanie wysyła osoba zalogowana smile.gif
!*!
Nie mogę, sesje działają w obrębie przeglądarki, więc jeśli otworzę kolejną kartę w której dam bezpośredni adres to sesja i tak będzie działać.
bełdzio
Cytat(!*! @ 28.06.2009, 13:06:56 ) *
Po prostu chciałbym ograniczyć przeglądanie tych plików bezpośrednio, mają one być tylko dostępne z poziomu index.php/zalogowania.

http://www.beldzio.com/bezpieczenstwo-dostepu-do-plikow - na dole opis smile.gif
viking
Większość frameworków JS wysyła nagłówek X-Requested-With . Sprawdzaj czy istnieje. na refererze nie możesz polegać.
!*!
bełdzio ok, tylko jednego nie rozumiem...

przykładowo zrobiłem katalog test ponad katalogiem public_html ... w nim umieściłem przykładowy plik do wczytania, przez plik który znajduje się w publicu ... podanie ścieżki na sztywno w include zadziała:

  1. <?php include '../test/plik.php'; ?>


ale jak to zapisać w RR?

Kod
RewriteRule ^(wczytaj)$ /../test/plik.php [L]
bełdzio
Cytat(viking @ 28.06.2009, 13:28:50 ) *
Większość frameworków JS wysyła nagłówek X-Requested-With . Sprawdzaj czy istnieje. na refererze nie możesz polegać.

a kto mi zabroni przesłań nagłówka "X-Requested-With" w zwykłym zapytaniu? smile.gif

Cytat(!*! @ 28.06.2009, 16:07:45 ) *
przykładowo zrobiłem katalog test ponad katalogiem public_html ... w nim umieściłem przykładowy plik do wczytania, przez plik który znajduje się w publicu ... podanie ścieżki na sztywno w include zadziała:

kieruj do pliku ktory znajduje sie w public_html i w nim go inkluduj dodając odpowiednie filtry, np generuj token, na podstawie ktorego bedziesz spr czy odwolanie do pliku nastapilo bezposrednio czy z wykorzystaniem pliku posredniego - na blogasku w notce o CSRF masz cos o generowaniu tokenow
!*!
a jak sprawdzić z jakiego pliku zostało to wykonane? Poza tym, w każdym "wczytywanym" pliku przez ajax jest sprawdzanie sesji, loginu, useragenta itp. coś jeszcze dodać, o to Ci chodziło?
bełdzio
wchodzisz na strone A -> generowany jest i wsadzany do sesji token -> w kodzie strony A wywolujesz plik B przy pomocy ajaxa -> w pliku B spr czy przekazany GETem token jest taki sam jak w sesji -> jesli nie exit smile.gif
viking
Cytat(bełdzio @ 28.06.2009, 19:17:57 ) *
a kto mi zabroni przesłań nagłówka "X-Requested-With" w zwykłym zapytaniu? smile.gif

Bezpośrednio GETem w przeglądarce nie wyślesz nagłówka a o to autor pytał. Twoje zastosowanie bezpośrednio nic nie daje bo wystarczy że odwiedzę stronę i już mam wygenerowaną sesję co za tym idzie token. Aby to dobrze działało trzeba by połączyć kilka technik ekstra nagłówki, double cookie czy przesyłanie tylko POSTem.
bełdzio
Cytat(viking @ 29.06.2009, 06:50:14 ) *
Bezpośrednio GETem w przeglądarce nie wyślesz nagłówka a o to autor pytał. Twoje zastosowanie bezpośrednio nic nie daje bo wystarczy że odwiedzę stronę i już mam wygenerowaną sesję co za tym idzie token. Aby to dobrze działało trzeba by połączyć kilka technik ekstra nagłówki, double cookie czy przesyłanie tylko POSTem.

a kto mi zabroni napisac skrypt w perlu ktory doda taki naglowek?

a co do tokena, to generujesz go przy kazdym odswiezeniu, czyli wazny jest tylko na 1 zapytanie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.