Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Bezpieczeństwo strony
Asuri
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.07.2014

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


Witam, jestem w trakcie tworzenia pierwszej strony która będzie odwiedzana przez większą ilość użytkowników. I tu się trochę obawiam o bezpieczeństwo dlatego wolę zapytać czy mój kod jest wystarczająco bezpieczny.

Na stronie będzie wiele formularzy. Każda zmienna z formularza jest filtrowana w ten sposób:
  1. <?php function clear($text) {
  2. $text = stripslashes($text);
  3. }
  4. return $text;
  5. } ?>

A do bazy danych dane przesyła się tak:
  1. $zap="INSERT INTO `chat` (`od`, `time`, `say`) VALUES
  2. ('$anon_nick', '$time', '$say')";
  3. mysql_query($zap) or die('Dodanie wpisu nie powiodło się.');

I tu pytanie czy to jest bezpieczny sposób? Myślałem jeszcze o zamienieniu znaku apostrof i cudzysłowia na encję by przy wyświetleniu zamieniało z powrotem na ten znak. W niektórych przypadkach nie mogę zabronić użytkownikom używania tych znaków ale wiem, że można ich użyć do ataku, więc czy zamiana ' i " na encję sprawi, że kod sql injection się nie wykona? Jeśli tak to: Zauważyłem, że funkcja htmlentities zamienia cudzysłów na encję (w bazie danych jest encja a w przeglądarce widać z powrotem cudzysłów) i to samo ze znakami >< jednak pozostał znak ' czyli apostrof i tu pytanie czy jest funkcja która zrobi to samo z tym znakiem czy muszę zamieniać znak na encję oraz przy wyjściu samodzielnie zamieniać encję na apostrof?
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Nie, Twój kod nie jest bezpieczny. Korzystasz z przestarzałych funkcji mysql_query i pokrewnych. Dodatkowo htmlspecialchars/htmlentities powinieneś używać przed wyświetleniem danych w dok. HTML, nie przy wrzucaniu danych do bazy.

Ten post edytował Crozin 8.10.2014, 13:11:01
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Kod podanej przez Ciebie funkcji Clear() bardzo czesto sie przewija przez forum. Czy w necie jest jakis serwis: Kompedium błędnej wiedzy archaicznej , z ktorej to strony początkujacy ludzie czerpią wiedzę?

Cytat
Myślałem jeszcze o zamienieniu znaku apostrof i cudzysłowia na encję by przy wyświetleniu zamieniało z powrotem na ten znak
Poczytaj o atakach SQLInjection, jak się przed nimi bronic, to przestaniesz wypisywac takie dyrdymaly, jak zamiana apostrfow na encje.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Asuri
post
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.07.2014

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


Cytat(Crozin @ 8.10.2014, 14:10:44 ) *
Korzystasz z przestarzałych funkcji mysql_query i pokrewnych.

Czyli powinienem przerzucić się na PDO?

Cytat(Crozin @ 8.10.2014, 14:10:44 ) *
powinieneś używać przed wyświetleniem danych w dok. HTML, nie przy wrzucaniu danych do bazy.

Dlaczego? Kilka razy w internecie widziałem tą uwagę ale nigdy żadnego wyjaśnienia, więc pytam bo chcę wiedzieć gdzie leży różnica.

"Czy w necie jest jakis serwis: Kompedium błędnej wiedzy archaicznej?"
Tak, jest. Masa darmowych poradników pisana prawdopodobnie przez innych początkujących a ci lepsi nie chcą dzielić się za darmo wiedzą. Napisaliście mi, że źle robię ale naprowadzić na dobrą drogę to nie bardzo. Jedyne co od was się dowiedziałem konkretnego to, że powinienem zamieniać na encję przy wyświetleniu ale dlaczego to już nie, więc de facto nic konkretnego się nie dowiedziłem. Dzięki.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A teraz czytamy ze zrozumieniem:
Cytat
Poczytaj o atakach SQLInjection, jak się przed nimi bronic, to przestaniesz wypisywac takie dyrdymaly, jak zamiana apostrfow na encje.

Wiem, ze to trudne, ale postaraj sie. Wyraz po wyrazie, potem sproboj z tego z klecic zdanie wink.gif

Zas co do zamieniania na encje przed wyswietlaniem, to poczytaj o atakach XSS - tam jest odpowiedź na to pytanie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 03:08