![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 26.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Zrobilem sobie calkiem fajna aplikacje na bazie Ajaxa i wszystko pieknie dziala. Zaczalem tez na sile starac sie zepsuc aplikacje od strony uzytkownika, zanim wystawie ja publicznie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jedna rzecz (w sumie kosmetyczna) - czy mozna w jakis sposob zabezpieczyc strony wywolywane za pomoca ajaxa ? Tzn chodzi o to ze np. majac pliki ktore za jego pomoca sa pobierane (np. zanjduja sie w katalogu ax/skrypt.php), zostana wywolane bezposrednio z pzregladarki produkuja dosc nie-ladny stzrep HTML'a lub tekstu. Da sie to w jakis sposob zabezpieczyc ? Od strony serwera nie bardzo chyba jest taka mozliwosc, bo żądanie przychodzi z IP klienta. Od strony aplikacji - hm jedyne co mi przyszlo do glowy to inicjowac zmienna sesyjna po wejsciu na strone w sposob "normalny" i wypluwac output w zaleznosci czy jest ona juz ustawiona czy nie... Jakies inne roziwzania ? czy moze sobie odpuscic ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 28.09.2007 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Trochę nie w czas, ale jakby kto do wątku wrócił...
Przed chwilą robiłem coś takiego u siebie. Proste do bólu, a na pytanie "po co zabezpieczać": nie trzeba być geniuszem, żeby się domyśleć, że można mieć np. prywatną, kupioną bazę danych, której nie chce się udostępniać wszystkim jak leci. Przecież napisać skrypt który wyciąga całą bazę z czyjegoś niezabezpieczonego AJAXA jest barszczowo łatwo. Temat był wiele razy opisywany na tym forum ale podsumuję wrzucając moje krótkie i banalnie proste rozwiązanie: W skrypcie głównym wrzucamy coś takiego: Kod session_start(); $_SESSION['_' . session_id()] = null; // wysyłamy unikalny klucz w sesji W skrypcie wywoływanym AJAX-em coś takiego: Kod if ($_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') { // wywołanie AJAXEM? session_start(); $acc = array_key_exists('_' . session_id(), $_SESSION); // kluczyk jest? } if (!$acc) { header('HTTP/1.1 403 Forbidden'); // grzeczny header dla botów exit('Akwizytorom dziękujemy!'); // przyjazny komunikat dla nieproszonych gości } I pozamiatane. Musisz zhackować mechanizm sesji w PHP żeby to obejść. Zaletą tego rozwiązania jest, oprócz absolutnie minimalnego obciążenia serwera, że klucz przesyłany w sesji jest unikalny, tzn nie ma żadnej możliwości, żeby nadpisał jakąkolwiek inną zmienną sesyjną. Dodatkowo jego wartość jest nieistotna. Ustawiłem ją dodatkowo na null, żeby łatwiej ją było ignorować w funkcjach operujących na całej tablicy $_POST. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 11:49 |