![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 27.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Funkcje magic_quotes_gpc, mysql_escape_string i addslashes dzialaja. Polaczenie z baza nie wykrzacza sie jak w zmiennej jest np apostrof '. W bazie nie zapisuja sie znaki ucieczki tzn \. Sprawdzilem przy wlaczonej funkcji magic_quotes_gpc i przy wylaczonej a za to z mysql_escape_string i addslashes. W zadnym z tych wypadkow w bazie nie pokazuja sie dodatkowe znaki. Zastanawiam sie czy jest sens stosowania funkcji stripslashes przy wyciaganiu danych z bazy skoro nie ma w niej zadnych dodatkowych znakow \ ?
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
A wiesz przynajmniej co jest traktowane przez magic quotes?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 27.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
No dziala np na cudzyslow " czy na apostrof ' i jak pisalem te funkcje dzialaja bo inaczej bez nich wykrzacza sie zapytanie do bazy. Chodzi mi o to ze przy wlaczonych tych funkcjach (oczywiscie nie wszystkich naraz tylko kazda z osobna) nie pojawiaja mi sie dodatkowe backslashe \ w bazie i moge wyciagac dane z bazy bez fukncji stripslashes.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Na zmienne globalne m.in. $_GET, $_POST
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 27.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
To jest prosty formularz testowy:
Zmienna ktora wpisywalem w formularzu to: a'a"a/a
To jest zmienna globalna:
Zostala ona zapisana do bazy przy wlaczonej funkji magic_quotes_gpc. Potem wylaczylem magic_quotes i zapisalem do bazy zmienna:
Potem zapisalem do bazy zmienna:
Wynik w bazie jest nastepujacy: (IMG:http://80.54.90.180/test/test.jpg) Funkcje magic_quotes_gpc, mysql_escape_string i addslashes dzialaja bo inaczej jest blad przy zapisie do bazy. Jednak nie zapisuja mi sie zadne backslashe w bazie i zastanawiam sie o co chodzi i jaki sens jest stosowania stripslashes? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj co się stanie z magic_quotes_gpc w przyszłych wersjach PHP. addslashes z tego co pamiętam (dawno nie używałem) nie były binarnie bezpieczne dlatego należy używać escapeowania dostępnego dla danego sterownika.
Generalnie jak chcesz mieć problemy to używaj w takiej formie jak podałeś (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Magic quotes to samo zlo. Zostalo wymyslone dla mega poczatkujacych programistow aby zapobiec SQL injection, ale juz tych troche zaawansowanych to wnerwia.
Wiec najlepiej: wylaczyc magic quotes - wszelakie, nie uzywac addslashes, tylko mysql'owego eskejpowania (real escape...) do wstawiania danych do bazy. Przy wyciaganiu danych nie usuwasz wtedy slashy. No a jak nie mozesz magic quotes wylaczyc to najlepiej jak najwczesniej jej usunac ze zmiennych $_GET i $_POST - tu wlasnie stripslashesami. No i (nie pamietam bo nie uzywam) ale przy ktorychs z magic_quotes, dane pobrane z bazy tez beda mialy slashe dodane, i trzeba je znow usuwac (stripslashes). |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 27.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ja uzywam wersji: mysql_escape_string.
Mam tez wlaczone na serwerze magic_quotes_gpc. Dane zapisywane do bazy sa bezpieczne. Moje pytanie dotyczylo wyciagania danych z bazy i funkcji stripslashes. Czyli jak uzywam mysql_escape_string to nie musze uzywac stripslashes i o to mi chodzilo bo wolalem sie upewnic. |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
A co z
Cytat magic_quotes_runtime If enabled, most functions that return data from an external source, including databases and text files, will have quotes escaped with a backslash. Can be set at runtime, and defaults to off in PHP. See also set_magic_quotes_runtime() and get_magic_quotes_runtime(). ? BO wtedy musisz usunac slashe (teoretycznie sprzed quote'ow tylko)No i artykul czemu warto je wylaczyc: http://en.wikipedia.org/wiki/Magic_quotes Ten post edytował dr_bonzo 28.07.2009, 08:56:35 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zajrzyj do dokumentacji mysql_escape_string i zobacz co tam jest napisane o deprecated. Jeśli nie musisz korzystać ze specyficznych f-kcji mysqli używaj PDO i problem z głowy. Jęśli wkładasz dobrze escapowane to nie musisz się martwić przy wyciąganiu.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 27.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
magic_quotes_runtime mam wylaczone wiec nie ma z tym problemu.
Poczytalem o mysql_escape_string i przerzucam sie na mysql_real_escape_string. PDO zajme sie pozniej. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 15:20 |