Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zabezpieczenie wejścia
Forum PHP.pl > Forum > Przedszkole
adam882
Witam

Mam taki początek w skrypcie

  1. $h_referer=$_SERVER['HTTP_REFERER'];
  2. if (!preg_match("/".str_replace('/','\/',URL)."/",$h_referer)){die('Niedozwolone wejście');}


gdzie URL to mój adres strony. Wydaje mi się, że skrypt może nie zadziałać, kiedy ktoś na końcu adresu doda sobie wartość "URL", dlatego chciałbym przerobić skrypt, aby sprawdzał, czy z lewej strony zawiera się adres URL, a nie w całym linku pod zmienną $h_referer . W jaki sposób można to zrobić?
nospor
Wywal te zabezpieczenie. NIe każdy wysyła HTTP_REFERER

Nie wspomnę już o sytuacji, gdy ktoś wpisze z palca twój adres i wtedy na 100% nie bedzie miał twojego referera
adam882
Dzięki. Zastanawiam się jak zrobić, aby plik przechwytywania danych formularza w ajaxie nie wywołał się, kiedy użytkownik otworzy plik bezpośrednio, ale działał, kiedy użytkownik użyje go ze strony gdzie jest formularz ajaxowy.
verio
A nie wystarczy zwykłe
  1. if($_POST)

?
Shili
http://www.electrictoolbox.com/how-to-tell-ajax-request-php/

Oczywiście nie ma metod stuprocentowo skutecznych i takie zabezpieczenie można ominąć.
Zarówno z parametrem get, jak i w przypadku jQuery z drugim kodem.
nospor
Cytat
Dzięki. Zastanawiam się jak zrobić, aby plik przechwytywania danych formularza w ajaxie nie wywołał się, kiedy użytkownik otworzy plik bezpośrednio, ale działał, kiedy użytkownik użyje go ze strony gdzie jest formularz ajaxowy.
Pierwsze i najważniejsze pytanie: a co ci szkodzi ze otworzy ten plik inaczej niż ajax? Jeśli naprawdę ci to coś zepsuje, to wniosek jest jeden: masz źle napisany kod. Bo dla systemu nie powinno się nic stac, jesli ktoś odpali coś ajaxem lub nie.
adam882
Mam przykładowo moduł artykułów, a w nim system głosowania w ajaxie (który wysyła głosy do pliku ajax_vote.php?id=id_artykułu). Nie chcę pozwolić użytkownikowi "nabijać" sobie głosy, po przez bezpośrednie wejście na ajax_vote.php?id=id_artykułu - a już tym bardziej "przejechanie" tego skryptu curlem z proxami). Czyli nie ma innego wyjścia, jak tylko zezwolić użytkownikowi na odwołanie się do pliku ajax_vote.php tylko, kiedy znajduje się na stronie z artykułem..
nospor
1) A jaki ktoś może mieć problem by z twojej strony ciągle wysyłać tego ajaxa? Zaden
2)
Cytat
a już tym bardziej "przejechanie" tego skryptu curlem
A jaki problem ten ktoś może miec by wysłać ci to curlem, nawet jeśli to u ciebie jeste ajax? Również żaden.

To co robisz to nie są żadne zabezpieczenia.
Jak chcesz zabezpieczyć skrypte przed multigłosowaniem to zapisuj np. IP i pisz, że z tego IP już ktoś głosował i koniec. Albo udostępniaj głosowanie tylko dla zalogowanych. Wówczas jeden user bedzie mógł ttylko raz głosować na daną rzecz. Ale tego tak czy siak nie zabezpieczysz a już napewno nie w ten sposób jak ty to robisz bo to żadne zabezpieczenie.

To przeglądarka wysyła nagłówek, że żądanie idzie AJAXem a nie serwer. Skoro więc to robi przeglądarka, to równie dobrze ja ci CURLe mogę wysłać dokładnie to samo i nabijać sobie do woli.
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.