Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zabezpieczenie formularza
mihow
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 15.09.2003
Skąd: Polska / Płock

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


Witam!
Mam zwykły formularz logowania wysyłany POST'em na zwykłym HTTP.
REGISTER_GLOBALS jest wyłączone. Jak zabezpieczyć taki formularz, aby nikt nie mógł go obejść?
Dodam, że po poprawnym zalogowaniu tworzone są sesje, które identyfikują zalogowanego użytkownika w systemie.

Pzdr
Michał
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Podczas odbierania danych z formularza możesz sprawdzać referrera, skąd przyszedł formularz, i jeżeli nie od Ciebie, to go odrzucasz.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
Roly
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 7
Dołączył: 8.12.2003
Skąd: Andrychów

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


Nie chcialem tworzyc nowego tematu bo dotyczy on wlasnie zabezpieczenia formularza i mam pytanko potrzebuje skrypcik htory sprawdzi refferera pod wzgeldem tego czy pochodzi z http://*.mojadomena.pl


--------------------
adminvps.pl
Go to the top of the page
+Quote Post
goldmann
post
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 20.11.2004
Skąd: Polska :P

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


  1. <?php
  2. if (strstr($_SERVER[&#092;"HTTP_REFERER\"], \"mojadomena.pl\") == NULL) {
  3. echo(&#092;"Przejdź do formularza ze strony http://mojadomena.pl/\");
  4. } else {
  5. // wszystko OK
  6. }
  7. ?>

Pozdrawiam!


--------------------
Goldmann Marek

workspace: win2k3 | apache2.0.52 | php 5.0.2
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


  1. <?php strstr($_SERVER[&#092;"HTTP_REFERER\"], \"mojadomena.pl\") ...?>

ale funkcja ta zwraca pozycje pierwszego wystapienia "mojadomena.pl" w refererze => strstr() zwroci wartsoc !== FALSE jesli znajdzie "mojadomena.pl" w refererze (zaakceptuje referera).
Zaakceptuje:
http://costam.mojadomena.pl/....
a takze
http://evilh4xors.com/hackhim.php?site=BLA...domena.plBLABLA
lub
http://evilh4xors.com/mojadomena.pl.html

A poza tym referera wysyla przegladarka -- czyli user, ktory moze ta wartosc dowolnie zmienic (np. jakis extension do ffoxa).


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
goldmann
post
Post #6





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 20.11.2004
Skąd: Polska :P

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


@dr_bonzo: no tak

No to zrób tak: jeżeli Twoja strona używa sesji, to w przypadku, gdy user jest na stronie formularza - ustaw jakąs zmienna sesyjną, np. $_SESSION['ze_strony'] na true. Następnie, w pliku obsługi formularza trzeba sprawdzać, czy $_SESSION['ze_strony'] jest ustawione, wtedy wszystko OK, jeżeli nie, to alert.


--------------------
Goldmann Marek

workspace: win2k3 | apache2.0.52 | php 5.0.2
Go to the top of the page
+Quote Post
scanner
post
Post #7





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




W formularzy dodaj pole hidden, w które wpiszesz ID sesji. Po wysłaniu tego formularza sprawdzasz ten numer sesji z ID uzyskanym na poziomie php.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
yeti
post
Post #8





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

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


BTW referera (od razu mówię, że nie sprawdziłem, bo nie miałem jak, ale właśnie mi wpadło w oko a tyczy tematu):

Cytat
How to Spoof HTTP_Referer
(or any other browser passed variable)

To see an ELEMENTARY way to spoof any referer (sic) value, you'll need telnet and a way to see the referer value that your server records (server logs always have the referer value in them).

Try the following:
(The example below assumes your homepage is index.html)

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)

Now, check your server logs and you'll see that "someone" from hah-hah.com grabbed your homepage.

If you are trying to "protect" a file by making sure that the referer value (or any other browser passed variable) is your own website, you can be bypassed by this simple technique. You cannot trust any browser passed variables.


no i tak to ponoc wygląda. Jak się dorwę wieczorem do serwera to przestestuję to sobie.


i jeszcze cytat z manuala:
Cytat
'HTTP_REFERER'
    The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.


Ten post edytował yeti 25.11.2004, 13:31:26


--------------------
pozdrawiam
Krzysiek
Go to the top of the page
+Quote Post
Roly
post
Post #9





Grupa: Zarejestrowani
Postów: 55
Pomógł: 7
Dołączył: 8.12.2003
Skąd: Andrychów

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


zrobilem to tak:

  1. <?php
  2.  
  3. preg_match('/^http://(www.)?([w]+)?.?([w]+)?.?domena.pl/', $ref)
  4.  
  5. ?>


temu tak bo moj system nie ma wiekszego poziomu domen niz dwie czyli cos.cos2.domena.pl albo www.cos.cos2.domena.pl


--------------------
adminvps.pl
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: 20.08.2025 - 01:47