![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 1.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim, na wstępie: jako nowy użytkownik forum - witam wszystkich
![]() Sporo się mówi ostatnio o atakach SQL Injection (choć nie tylko), ale i także prawidłowym zabezpieczaniem skryptów. Jako, że ja nie miałem do czynienia z wieloma różniącymi się serwerami, nie mogę też mieć pojęcia na temat funkcji dotyczących automatycznego dodawania slashy przed znakami takimi jak ' " `. Chciałbym zadać pytanie, jednocześnie przeprowadzając małą "ankietę" pytając was o to, czy w swoich bazach danych MySQL trzymacie tekst w czystej formie w stylu, czy może skonwertowany za pomocą funkcji addslashes: Cytat("Czysta forma") Jestem Ania i chodzę na zakupy do sklepu tzw. "Super'Samu" Cytat("Skonwertowana przez użycie funkcji addslashes") Jestem Ania i chodzę na zakupy do sklepu tzw. \"Super\'Samu\" Którą wersję preferujecie bardziej? Która wersja trzymania tekstu w bazie danych wydaje się Wam bezpieczniejsza? Mimo przyklejonego tematu o SQL Injection itp. byłbym wdzięczny za udzielanie się w temacie i wypisywanie zalet oraz wad wybranych przez Was sposobów. Ten post edytował Crade 1.05.2007, 22:31:33 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
W bazie danych dane trzyma się w "czystej formie", co nie znaczy, że nie używa się funkcji zabezpieczających przed atakami SQL Injection (addslashes, mysql_escape_string, mysql_real_escape_string, itp.)
Prosty test: odpal sobie phpMyAdmina i spróbuj wykonać takie zapytanie: Wyrzuci błąd. Następnie spróbuj wykonać takie zapytanie: i sprawdź jaki tekst znalazł się w bazie danych. Szczególną uwagę zwróć na to, czy zawiera ukośniki. Ukośnik informuje tylko bazę danych, że następny po nim znak (apostrof, cudzysłów, itp.) ma być traktowany jako zwykły tekst, sam natomiast do bazy danych zapisywany nie jest. -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 1.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
A tu przysłowiowa (_._), gdyż dane z formularza wprowadzone do skryptu w takiej formie:
... w bazie danych występują razem ze slashami. Czy przyczyną tego jest używanie SET zamiast VALUES? Hmm... nie mam pomysłów ![]() Ten post edytował Crade 2.05.2007, 15:17:28 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
magic_quotes_qpc" title="Zobacz w manualu PHP" target="_manual - tą funkcją sprawdzasz, czy tablice $_POST, $_GET i $_COOKIE już na starcie zostały potraktowane funkcją addslashes(). Jeśli tak, to: - jeśli używasz bazy danych MySQL, to dane wejściowe są już w pewnym stopniu zabezpieczone, jeśli używasz np. MSSQL to nie są zabezpieczone, bo MSSQL stosuje inny znak ucieczki. - będziesz musiał pamiętać o użyciu funkcji stripslashes" title="Zobacz w manualu PHP" target="_manual przed wyświetleniem danych z wyżej wymienionych tablic superglobalnych. No chyba że nie razi cię to, że po wpisaniu w formularzu tekstu: Wydawnictwo O'Reilly na stronie wyświetli się: Wydawnictwo O\'Reilly -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 1.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, Kicok, za pomoc i obszernego posta. Mimo to samemu udało mi się dojść (po dość długiej motaninie) do tego że magic_quotes_qpc jest włączone i znaki ucieczki dodają się same.
Początkowo zmieszałem się dlatego, że niektóre dane do zapytania pochodziły z formularza, a niektóre były zwykłymi zmiennymi. Te pierwsze były potraktowane slashami automatycznie, drugie zaś - nie. To mnie też właśniei zgubiło ![]() Mimo tego dziękuję bardzo za okazaną pomoc - oby więcej takich ludzi ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:45 |