Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]stripslashes() a mysql_real_escape_string()
Forum PHP.pl > Forum > Przedszkole
lepmajster
Mam pytanie dotyczace tych dwoch funkcji ( stripslashes() i mysql_real_escape_string() ).
Mianowicie napisalem prosty skrypt newsow i przy dodawaniu wpisu do bazy robie takie cos:
  1. $tresc = mysql_real_escape_string($_POST['tresc']);

robie to z kazda zmienna, ktora wprowadzam do bazy.
Jednak pojawis sie problem, gdy wrzucilem skrypt z localhost na hosting (wlaczone magic_quotes).
Do bazy dodaja sie slashe, gdy uzywam znakow cudzyslowiu lub srednika i teraz nie wiem, czy bezpieczniej jest te znaki usuwac przed dodaniem do bazy:
  1. $tresc = mysql_real_escape_string(stripslashes($_POST['tresc']));

, czy lepiej jest usuwac je przed wyswietlaniem na stronie?

Dodam ze wygodniej by mi bylo usuwac je przed dodawaniem do bazy, poniewaz wole miec w bazie wpisy bez tych slashow, ale nie jestem pewien, czy samo mysql_real_escape_string(), zabezpiecza mnie przed sql injection.
No i czy znaki cudzyslowiu i srednika, sa escapowane przez mysql_real_escape_string() ? Bo w manualu jest niby napisane, ze sa te znaki escapowane, ale w phpmyadmin nie widze backslashow przed " i ', a gdy uzyje addslashes() to wtedy widac ze sa te znaki escapowane.

Prosze o odpowiedz osoby, ktore sa pewne tego, a nie "wydaje mi sie" winksmiley.jpg

Pozdrawiam
zordon
najlepiej jest wyłączyć magic quotes. mozesz to zrobic przez .htaccess:
Kod
php_flag magic_quotes_gpc off
lub na niektórych serwerach np za pomocą własnego pliku php.ini.
Żeby zabezpieczyć się przez SQL injection najlepiej korzystać z PREPARED STATEMENTS mysql'a.
Aby wyciąć niepotrzebne slashe dodane przez magic_quotes_gpc możesz używać stripslashes, wcześniej sprawdzając, czy magic quotes są włączone get_magic_quotes_runtime
modern-web
mysql_real_escape_string służy do zabezpieczenia się (częściowego) przez SQL Injection... (bo jak się domyślam właśnie przed tego typu atakiem chcesz się zabezpieczyć, tak?) stripslashes usuń - nie do tego służy smile.gif
Po więcej informacji odsyłam Cię do manuala: http://pl.php.net/manual/pl/function.mysql...cape-string.php i http://pl.php.net/manual/pl/function.stripslashes.php winksmiley.jpg

Pozdrawiam!
lepmajster
modern-web: No ale jak usune stripslashes(), to do bazy dodawane beda slashe przed " i ', wiec wczesniej czy pozniej i tak bede musial uzyc stripslashes, bo np. podczas edycji danego newsa (gdy nie wytne slashy), to pozniej bede mial podwojna ich ilosc i tak w kolo macieju.
A do czego sluzy stripslashes jak nie do usuwania slashy? winksmiley.jpg
modern-web
Do usuwania slashy winksmiley.jpg
Myślałem, że masz na myśli np. zabezpieczenie przy wersyfikacji danych (dane trafiają do bazy ale nie wracają do wyświetlenia).
W takim wypadku korzystniej jest zastosować mysql_real_escape_string() przy odbieraniu danych z formularza, a stripslashes() przed ich wyświetleniem smile.gif
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.