![]() |
![]() ![]() |
![]() |
![]()
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:
A do bazy danych dane przesyła się tak:
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? |
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 2.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Korzystasz z przestarzałych funkcji mysql_query i pokrewnych. Czyli powinienem przerzucić się na PDO? 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. |
|
|
![]()
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 ![]() 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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:08 |