Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie includowanego w ajax pliku
Forum PHP.pl > Forum > XML, AJAX
donio11
Szukam, googluje - nie mogę znaleźć... może ktoś wie, jak zabezpieczyć pliki które inkluduje w ajaxie, aby nie mogły być odpalone, choćby poprzez wpisanie adresu do nich w przeglądarce ?

Kod
$.ajax({
   type: "POST",
   url: "ajax/dzialam.php",
   data: info,
[....]


chodzi mi o to ze jak wpisze domene/ajax/dzialam.php pliku to jest dostęp do katalogu i pliku....

dodanie .htaccess w katalogu z inkludowanymi plikami skutkuje tym że ajax przestaje działać. i nerwy już puszczają.

dzięki za każdą pomoc
attimo
sprawdz na poczatku czy istnieje zmienna POST.
bełdzio
spróbuj

  1. public static function is_ajax()
  2. {
  3. return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
  4. }

ale gwarancji raczej nigdy nie będziesz miał
donio11
Cytat(attimo @ 29.07.2010, 14:48:04 ) *
sprawdz na poczatku czy istnieje zmienna POST.


tak sprawdzam oczywiście czy jest odpowiedni $_POST

ale nie wydaje mi się żeby to było wystarczające zabezpiecznie.

Cytat(bełdzio @ 29.07.2010, 14:53:49 ) *
spróbuj

  1. public static function is_ajax()
  2. {
  3. return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
  4. }

ale gwarancji raczej nigdy nie będziesz miał



ehhh powiem szczerze że jeszcze nie jestem zbyt oblatany z ajaxem, w jaki sposób mam wykorzystać te funkcję ?

jeśli nie ma gwarancji, to po co ten cały ajax ;(
everth
Szczerze mówiąc to chyba nie jest możliwe - wywołujesz plik ajaxem czyli wysyłasz zwykłe żądanie - to tak jakby przeglądarka zażądała określonego zasobu. Możesz pokusić się o jakieś utrudnienie - np. w normalnym html wstawić np. hash z czegoś generowany (hash treści?) i zapisać go w sesji PHP. Następnie zmodyfikować skrypt by wysyłał ten hasz razem z ajaxem - weryfikujesz po stronie dzialam.php i jeśli go nie ma to dajesz die(). Ale to też jest do obejścia.
bełdzio
Cytat(donio11 @ 29.07.2010, 14:57:27 ) *
ehhh powiem szczerze że jeszcze nie jestem zbyt oblatany z ajaxem, w jaki sposób mam wykorzystać te funkcję ?

  1. if( !is_ajax( ) ) exit;


Cytat(donio11 @ 29.07.2010, 14:57:27 ) *
jeśli nie ma gwarancji, to po co ten cały ajax ;(

a kto powiedział, że zadaniem ajaxa jest dostarczenie zabezpieczenia?
230005
Zawsze coś się da zrobić. Możesz pliki wywoływać w nie tak oczywisty sposób. Np.:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. url : 'akcja/kontrolera/bez/php/na/końcu';
  3.  
[JAVASCRIPT] pobierz, plaintext

.
Potem w odpowiednim pliku parsujesz taki url, który przekłada się na np. folder/plik/funkcję którą chcesz wywołać.
thek
Bełdzio w dobrą stronę drąży. AJAX jest wysyłany z pewnymi nagłówkami. Co prawda zawsze można je spreparować, ale tego zwykli użytkownicy nie zrobią. Wystarczy ową funkcją sprawdzać czy żądanie je zawiera.
donio11
dzięki za wszystkie podpowiedzi i wyrozumiałość.
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.