Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]stripslashes() a mysql_real_escape_string()
lepmajster
post 24.11.2010, 16:20:46
Post #1





Grupa: Zarejestrowani
Postów: 129
Pomógł: 24
Dołączył: 21.05.2010

Ostrzeżenie: (30%)
XX---


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

Ten post edytował lepmajster 24.11.2010, 16:26:53


--------------------
Naciśnij POMÓGŁ, jeśli mój post był pomocny :)
Go to the top of the page
+Quote Post
zordon
post 24.11.2010, 16:37:46
Post #2





Grupa: Zarejestrowani
Postów: 358
Pomógł: 78
Dołączył: 4.11.2008
Skąd: Kraków

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


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
Go to the top of the page
+Quote Post
modern-web
post 24.11.2010, 16:50:59
Post #3





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


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!

Ten post edytował modern-web 24.11.2010, 16:52:50


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
lepmajster
post 24.11.2010, 17:05:03
Post #4





Grupa: Zarejestrowani
Postów: 129
Pomógł: 24
Dołączył: 21.05.2010

Ostrzeżenie: (30%)
XX---


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

Ten post edytował lepmajster 24.11.2010, 17:06:44


--------------------
Naciśnij POMÓGŁ, jeśli mój post był pomocny :)
Go to the top of the page
+Quote Post
modern-web
post 24.11.2010, 17:56:19
Post #5





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


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


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:36