8:52
5/3/2013

Czyli prezentacja o tym, czy escaping jest dobrym sposobem na poradzenie sobie ze wstrzyknięciami (SQLi, XSS).

Przeczytaj także:

Ten wpis pochodzi z naszego linkbloga *ptr, dlatego nie widać go na głównej.
*ptr możesz czytać przez RSS albo przez sidebar po prawej stronie serwisu.

4 komentarzy

Dodaj komentarz
  1. dzieki

  2. Wielka rzecz. Wywalić znaki większości/mniejszości z zmiennych które są później używane w kwerendach oraz apostrofy/cudzyslowy i jedziem. W PHP jest o tyle dobrze, że jest funkcja htmlspecialchars(), która to robi za nas. Nie wiem czy w Javie jest ekwiwalent (bo dokument jest głównie o Javie i JSP).

    • I najlepiej poprosić użytkowników przy formularzu, żeby nie używali apostrofów, bo mogą zepsuć bazę :->. Ale poważnie – po pierwsze nie można usuwać znaków, które niekoniecznie są używane do hackowania (szukanie “it’s” jest jak najbardziej legalne). Po drugie w różnych serwerach SQL masz różne znaki, które są groźne i jeśli nie jesteś 100% pewien, że je znasz, to powinieneś użyć biblioteki kogoś kto wiedział ;-). A w razie wątpliwości trzeba użyć prepare/exec, co powoduje z grubsza przypisanie danemu miejsca w zapytaniu odpowiedniego typu danych. To może być kosztowane jeśli chodzi o wydajność, ale jeśli inaczej nie ma się 100% pewności…

  3. Po prostu trzeba robić escapowanie odpowiednie dla danego rodzaju serwera i używanej biblioteki. PHP ma dla MySQL mysql_real_escape_string i używanie czegokolwiek innego dla ciągów znaków owszem jest ryzykowne. Oczywiście można próbować zawsze robić zapytania poprzez prepare/exec, ale to nie jest najwydajniejsza metoda w wielu wypadkach. Poza tym warto nie dać się zwariować i jak mamy do czynienia z intem itp, to wystarczy zmienną zrzutować i wtedy ma się pewność, że ma ten typ co trzeba.

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: