Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] - magic_quotes_gpc pytania, Włączyć czy wyłączyć ?
Mega_88
post
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 34
Dołączył: 20.08.2011

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


Witam, mam pytanie odnośnie umieszczenia w .htaccess:

  1. php_flag magic_quotes_gpc on


Przeczytałem różne artykuły gdzie albo piszą żeby włączyć lub wyłączyć. W swoim cms mam pola, w których wpisujemy na przykład "Opis zakładki" i obecnie mam zrobione to tak, że jak wpiszę "World's" to otrzymuje komunikat "Nie udało się zaktualizować zakładki". Wszystko fajnie, ale chcę jakby umożliwić wstawianie tych znaków w treść. Więc w .htaccess wstawiłem wspomnianą linię kodu i wszystko na pierwszy rzut oka działa świetnie.

Moje pytanie, jakie są minusy korzystania z takiej funkcji ? Czy ma to jakiś wpływ na bezpieczeństwo, poprawność takiego CMS'a, kodu ?

Moje przykładowe wysłanie zapytania do bazy wygląda teraz tak + to co wyżej w .htaccess:

  1. mysql_query("INSERT INTO strony(tytul,idk) VALUES('$tytul','1')") or die ('Nie udało się zaktualizować zakładki.');


Chciałem Was zapytać ponieważ jak dla mnie wygląda to wszystko dobrze bo osiągnąłem to co chciałem, ale właśnie czy nie idę po trupach do celu (IMG:style_emoticons/default/wstydnis.gif)

Ten post edytował Mega_88 23.10.2012, 19:23:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


http://php.net/manual/en/security.magicquotes.php

Nie bez powodu w PHP 5.4 zostało to usunięte. Tak więc powinno to być wyłączone. Problem z magicquotes jest taki, że działa to praktycznie wszędzie, a czasami nie chcesz by to zadziałało czyli escapowało niektóre znaki. I wtedy musisz się bawić w robienie stripslashes. Tak więc włączenie tego ma w sumie więcej wad niż zalet.

Ponadto, kod SQL który podałeś jest podatny na SQL injection. Dodatkowo nie powinno się już używać mysql_query tylko mysqli albo jeszcze lepiej PDO.

Np w PDO można używać prepared statements które zajmą się odpowiednim przekazaniem danych do treści zapytania, zabezpieczą przed SQL injection.

Ogólnie mógłbyś w podanym wyżej zapytaniu używać mysql_real_escape_string do escaping'owania znaków. Ale tak jak już wspomniałem nie jest to zalecane.

Ten post edytował jaslanin 23.10.2012, 21:16:47
Go to the top of the page
+Quote Post
CuteOne
post
Post #3





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


http://stackoverflow.com/questions/2127028...c-vulnerability
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #4





Goście







Słowem: najlepiej to wyłączać zawsze i wszędzie, np. z poziomu jakiegoś naszego pliku konfiguracyjnego skryptu / CMSa / itd..
Z włączonym stajemy się bardziej zależni od konfiguracji i musimy tego pilnować. Lepiej pilnować zawartości zmiennych bez takich "automatycznych parasoli".


@jaslanin:
Dlaczego podatny? Nie wiemy co wcześniej działo się z $tytul.
Go to the top of the page
+Quote Post
jaslanin
post
Post #5





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


@lukasamd:

1. Autor tematu nie wydaje się zaznajomiony z tematyką bezpieczeństwa.
2. Kod SQL sugeruje, że dane pochodzą od użytkownika.
3. Wstawianie zmiennych w kod SQL nie jest dobrą praktyką i zawsze wywołuje alarm w głowie kogoś kto miał styczność z kodem o niskiej jakości. W większości przypadków bowiem jest to związane z problemami z SQL injection.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 13:51