Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Bezpieczne przekierowanie przez GET
reyne
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

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


Witam (IMG:style_emoticons/default/smile.gif)
Napisałem skrypt go.php który wywoływany jest z hiperłączy na mojej stronie w postaci:

go.php?url=http://adrestrony.pl

np:

<a href="go.php?http://gry.pl">strona z grami</a>

tak wygląda kod skryptu
  1. $go = $_GET['url'];
  2. if(isset($go)) {
  3. // w tabeli entries znajduje sie baza linkow
  4. $give = mysql_query("UPDATE `entries` SET `entry_clicks`=`entry_clicks`+'1' WHERE `entry_link`='".$go."'");
  5.  
  6.  
  7. header("Location: ".$go."");
  8.  
  9. }


chodzi o to że skrypt dodaje do bazy kliknięcia w dany link, następnie przekierowuje użytkownika pod dany adres ze zmiennej get - URL.

Wszystko działa, problem pojawia się, kiedy w adresie ze zmiennej $_GET['url'] znajduje się np znak &, wtedy skrypt wariuje, bo jak się domyślam dopisuje to adres do skryptu go.php zamiast przekierowywać.

Pytanie: Jak zrobić żeby to działało poprawnie i bezpiecznie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Zrobić się da.

Inna sprawa, że jeśli chcesz mieć w miarę zabezpieczoną aplikację, to nie możesz zostawić żadnych informacji przychodzących od usera bez filtrowania/walidacji. Nieważne czy to dane z GET, POST, COOKIES, nagłówków czy czegokolwiek innego.

[edit]
Odpowiadając na wcześniejsze pytanie - podawaj adres wyescape'owany funkcją urlencode.

Ten post edytował sowiq 6.11.2012, 19:03:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 00:06