Podziel się opinią o serwisie

Biblioteka Wiedzy poleca

Office 365 - podręcznik użytkownika

Ta książka pokaże Ci, jak wykorzystać chmurowe przetwarzanie danych - a konkretnie Office 365 - aby robić więcej, współpracować łatwiej i działać...
pobierz »

Jak zwiększyć wydajność infrastruktury serwerowej oszczędzając czas i pieniądze? Nowoczesne rozwiązania serwerowe

Niniejszy dokument ma na celu zaprezentowanie sposobów na poprawę funkcjonowania i efektywności działania infrastruktury serwerowej w firmie lub...
pobierz »

Dlaczego warto korzystać z Office 365?

Jakie funkcje i możliwości Microsoft Office 365 decydują o tym, że warto wybrać to rozwiązanie zamiast tradycyjnego pakietu Office i rozwiązań...
pobierz »

Więcej bezpłatnych raportów w serwisie
powiększ tekst >
AKTUALNOŚCI

Automatyczne zabezpieczanie kodu PHP

18 czerwca 2010

Paweł Krawczyk
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.

Autorzy nie obiecują cudów, ale program TAPS (Tool for Automatically Preparing SQL queries) daje sobie całkiem nieźle - zaletą jest fakt, że na wejściu przyjmuje bezpośrednio kod PHP z osadzonymi zapytaniami SQL.

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.

Wystaw ocenę:
   Średnia ocena (liczba głosów: 7)
wydrukuj wydrukuj wyslij do znajomegowyślij do znajomego

Komentarze

~qwerty

  • ocena: brak oceny
  • IP: 87.207.166.178
  • 18-06-2010, 20:32

tralala... muszę napisać artykuł, a zaraz mecz... co by tu skrobnąć na szybko...

~vii

  • ocena: 1
  • IP: 213.156.122.10
  • 19-06-2010, 11:14

jeszcze by się przydało autorowi poznać co to XSS, bo coś chyba nie bardzo to kuma... co za żenada