Automatyczne zabezpieczanie kodu PHP
Trójka pracowników naukowych z Uniwersytetu Illinois stworzyła narzędzie, które automatycznie konwertuje kod źródłowy w PHP używający "sklejanych" zapytań SQL na znacznie bezpieczniejsze zapytania używające wyrażeń prekompilowanych (prepared statement). Wszystko po to, by chronić aplikacje przed atakami SQL Injection.
Na przykład weźmy taki kod napisany z użyciem "sklejanego" SQL:
function test1()
{
$a = $_GET['user'];
$query = "delete from test1 where u = '".$a."'";
@mysql_query($query);
}
Dostępne na stronie TAPS przekonwertuje go na następujące PHP z wyrażeniami prekompilowanymi:
function test1()
{
$a = $_GET['user'];
$query__args = $a ;
$query = "delete from test1 where u = ?" ;
executePS( query , query__args );
}
Powyższy kod co prawda chroni przed SQL injection w scenariuszach testowych ale nie należy go traktować jako wyroczni co najmniej z dwóch powodów.
Po pierwsze, użycie wyrażeń prekompilowanych znacznie utrudnia ale nie zawsze ochroni przed SQL injection w szczególnie złożonych przypadkach.
Po drugie, zaprezentowany powyżej kod to wręcz zaproszenie do ataku Cross-Site Scripting (XSS), którego autorzy w danej implementacji w ogóle nie biorą pod uwagę.
Biorąc powyższe pod uwagę w żadnym wypadku nie należy rezygnować z bogatej biblioteki funkcji filtrujących dostępnej w PHP. Opis ich użycia można znaleźć w artykule Jak bezpiecznie pisać aplikacje webowe. O innych atakach można przeczytać w artykule Kto zagraża bazom danych?.
Szczegóły implementacji TAPS opisane są w artykule autorów zatytułowanym Automatically Preparing Safe SQL Queries.
Komentarze (4)
Oryginalnie w artykule był jeden z ostatnich przykładów TAPS, który zapisywał dane do bazy i brał dane bezpośrednio z _GET. W tej sytuacji byłby to doskonały wektor do stored XSS. Później zmieniłem przykład na prostszy z DELETE więc faktycznie straciło to sens.
A znacznie ważniejsza może być obrona przed specyficznym atakiem czyli Antyforgery. Pozatym php, nawewt tworzone pod kompletnym Zend, to niestety nie ten świat, bo wystarcza tylko dla produktów nieodpowiedzialnych - inaczej za duży wysiłek w walkę z językiem i zaszłościami.
jeszcze by się przydało autorowi poznać co to XSS, bo coś chyba nie bardzo to kuma... co za żenada
tralala... muszę napisać artykuł, a zaraz mecz... co by tu skrobnąć na szybko...
- Kingston: Nowa linia dysków SSD
- Microsoft zapowiada nowy system plików - ReFS
- Intel: SSD 520 - nowa linia szybkich dysków
- Praktyczne porady dla administratorów na 2012 rok
- Co powinien wiedzieć każdy specjalista IT?
- Narzędzia dla administratorów sieci
- Windows Intune 3.0 - szansa na perfekcyjne narzędzie?
- Kontrowersyjne decyzje Oracle odnośnie Javy
- Testy penetracyjne pomogą w obronie przed cyberatakami
- 2012 - rok przełomowy dla internetu?
Polecane
Przełomowy rok... znowu
Lektura firmowych informacji prasowych i prognoz firm analitycznych nie pozostawia wątpliwości - każdego roku...
Spokój i luz administratora
Wymagania wobec pracowników działów IT rosną proporcjonalnie do stopnia rozwoju teleinformatyki. Oczekuje się, że...