![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 339 Pomógł: 3 Dołączył: 15.10.2008 Skąd: Internet Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Zastanawiam się, czy to co robię jest bezpieczne dla mojego serwisu:
Czy już samo preg_match gwarantuje duże bezpieczeństo? Jak z niego wnioskuję nic oprócz podanych znaków/zakresów znaków nie przejdzie, czyli wprowadzenie w $_GET adresu URL, czy też próba wyjścia przed katalog pages (GET=../plik) będzie nie możliwe, gdyż są tam znaczniki które nie przejdą (/ , : .). Dobrze myślę, czy się mylę? A może muszę jeszcze $get_page przepuścić przez htmlspecialchars, itp? Tak samo z dodawaniem do bazy, jeżeli dane przejdą przez takiego preg_match'a to nie ma prawa wykonać się żaden sql injection, gdyż nie wprowadzi potencjalny włamywacz znaków, np. = ' " ` itp? Pozdrawiam! Ten post edytował desavil 6.03.2012, 08:53:01 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A po co do tego regexp? Wystarczy zabronić takiemu ludkowi wychodzić katalog wyżej, i będzie mógł wówczas "otworzyć" pliki tylko te które są w danym katalogu. Druga sprawa. Przypisujesz wartość page z zmiennej get, i dopiero po przypisaniu sprawdzasz czy nie jest pusty/istnieje. A to powinieneś zrobić w pierwszej kolejności.. I taki kod może wyglądać mniej więcej tak:
W ten sposób nie musisz używać regexpów, masz możliwość powiadomienia o błędnym adresie. A co do sql injection, jest na to wiele sposobów, a najbardziej skutecznym IMO jest podpinanie zapytań w PDO. Wówczas nie trzeba (co nie znaczy że się nie powinno), się bawić w wyrażenia regularne i/lub filtrowanie wszystkich parametrów. Ten post edytował by_ikar 6.03.2012, 10:22:03 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 23:15 |