Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zabezpieczenie wejścia
adam882
post
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


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ć?

Ten post edytował adam882 30.12.2011, 10:59:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adam882
post
Post #3





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


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.
Go to the top of the page
+Quote Post
verio
post
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 1
Dołączył: 23.01.2007
Skąd: Wołomin

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


A nie wystarczy zwykłe
  1. if($_POST)

?
Go to the top of the page
+Quote Post
Shili
post
Post #5





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


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.

Ten post edytował Shili 30.12.2011, 12:28:55
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adam882
post
Post #7





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


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

Ten post edytował adam882 31.12.2011, 09:56:21
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 22.08.2025 - 00:05