![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 24 Dołączył: 21.05.2010 Ostrzeżenie: (30%) ![]() ![]() |
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: 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: , 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" ![]() Pozdrawiam Ten post edytował lepmajster 24.11.2010, 16:26:53 -------------------- Naciśnij POMÓGŁ, jeśli mój post był pomocny :)
|
|
|
![]()
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 |
|
|
![]()
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
![]() 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 ![]() Pozdrawiam! Ten post edytował modern-web 24.11.2010, 16:52:50 -------------------- Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 24 Dołączył: 21.05.2010 Ostrzeżenie: (30%) ![]() ![]() |
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? ![]() Ten post edytował lepmajster 24.11.2010, 17:06:44 -------------------- Naciśnij POMÓGŁ, jeśli mój post był pomocny :)
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
Do usuwania slashy
![]() 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 ![]() -------------------- Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 09:36 |