![]() |
![]() |
![]() ![]()
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 -------------------- "Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tylko widzisz, zawsze zostaje pytanie czy dobrze napisałeś regułkę REGEXP
![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 339 Pomógł: 3 Dołączył: 15.10.2008 Skąd: Internet Ostrzeżenie: (0%) ![]() ![]() |
Tak, ale raczej filtrowanie preg_match'em + gotowymi funkcjami do tego celu z PHP, raczej niema sensu?
W tak prostej regułce raczej nie można się pomylić ![]() Ten post edytował desavil 6.03.2012, 09:01:22 -------------------- "Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki! |
|
|
![]()
Post
#4
|
|
![]() 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: 20.08.2025 - 19:06 |