Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] - magic_quotes_gpc pytania
Forum PHP.pl > Forum > Przedszkole
Mega_88
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 wstydnis.gif
jaslanin
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.
lukasamd
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.
jaslanin
@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.
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.