Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: header a dane od użytkownika
Forum PHP.pl > Forum > PHP
Haczyk67
Czy wywołanie header('Location: /szukaj/ksiazki/'.$_POST['dane']); jest bezpieczne?
Wywołuję to w pliku szukaj.php, który zamienia link na bardziej przyjazny.
Jeżeli użytkownik wpisze w wyszukiwarce 'lol' jest przekierowywany na /szukaj/ksiazki/lol
Czy istnieje jakieś niebezpieczeństwo?
kipero
Według mnie jest bezpieczne. I tak wszystko "przeleci" przez plik wyszukiwarki, a tam możesz już zabezpieczyć się przed chociażby SQL Injection. Nie wiem tylko czy nie powinno być:
  1. <?php
  2. header('Location: /szukaj/ksiazki/' . urlencode($_POST['dane']));
  3. ?>
Haczyk67
Tak zgadza się potem przeleci przez mysql_real_escape_string, ale czy w tym pliku jest to bezpieczne: ktoś moze np. zakończyć funkcję header i wywołać exit;

A co do urlencode: wszystko ładnie jest bez tego: wyświetla polskie znaki zamienione co w stylu %B3
kipero
Tak jak napisałem, w tym pliku jest bezpiecznie. Jeśli nawet w $_POST['dane'] znajdzie się kod PHP to i tak się nie wykona - tak więc nie ma możliwości zmiany działania skryptu.
Haczyk67
A jednak winksmiley.jpg Wysyłanie czegoś takiego nie do końca OK. Wystarczy, że ktoś wpisze np. \n. I wtedy adres wychodzi zamiast /zapytanie: /\n co generuje błąd 404 i to w dodatku nie ten zdefiniowany przeze mnie tylko pierwotny localhostowy. Może są jeszcze inne znaki jakie mam przefiltrować?

edit: zauważyłem, że znak \ psuje mi nie tylko wyszukiwarkę, ale też wszystkie inne skrypty. Po wpisaniu \ na końcu adresu wyrzuca błąd Not Found (nie ten zdefinowany przeze mnie). Co moge zrobić żeby skrypt ignorował ten znak w adresie?
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.