15:10
18/5/2010

Bez SQL injection mi tutaj!

Jeden z banków na swoich internetowych stronach pomocy wyjaśnia, czego nie wolno wpisywać jako odpowiedź na tzw. pytanie kontrolne:

Fragment FAQ banku Sacramento Credit Union

Kto wie:

  • z którego modułu do Apache’a korzysta bank, ew. jakiego ma WAF-a? :>
  • …i jak można obejść ten problem? :-)

Ku pamięci: oryginał i cache Google.

Przeczytaj także:

16 komentarzy

Dodaj komentarz
  1. Nie wystarczy przyjmowanych danych enkodować?

  2. my w firmie mamy wyfiltrowane etc/passwd

  3. mod_security?

  4. HCSL był pierwszy :>

  5. r9: Chyba raczej Jubal kilka dni temu na blipie ;) a potem tmkasprzak, do którego odsyłamy w naszym tekście i do którego dziś link podesłał nam jeden z czytelników przez formularz :)

  6. Pytanie powinno być “kto zatrudniał małpy do pisania aplikacji/zapytań do bazy” ;]

  7. Możliwe ;D

  8. @XANi
    Małpy nie są aż takie głupie.

    No ale bez przesady, wyfiltrowanie takiego czegoś to kwestia 2-3 linii kodu. Chyba że chodzi im o fakt zastosowania właśnie takiego zabezpieczenia przez co mogą wystąpić przekłamania.

  9. a może poprostu robią statystykę ile osób próbuje się do nich dobrać i zliczają wszystkie komendy

  10. Powinni, wzorem innych firm, zabronić włamywania się do banku przez Internet.
    Kto wie, jakie zabezpieczenia są używane przez hamerykańskie banki ? Chodzi mi o jakieś tokeny, hasła sms i tego typu wynalazki.
    Kiedyś słyszałem plotę, że jak mamy login/hasło użytkownika banku, to możemy sobie robić co tylko chcemy z jego pieniędzmi…

    PS. Odnośnie małp i zapytań do bazy… Idę o zakład, że robiła to jakaś firma, która była TANIA.

  11. Chodzi właśnie chyba o to, że filtrują takie dane.

    Z tym, że jeśli klient sobie będzie chciał ustawić odpowiedź: “Ala ma DROP kota”, to po filtracji zostanie mu “Ala ma kota” – a to nie jest odpowiedź wpisana przez niego.

    Tak, czy inaczej – śmiesznie :)

  12. @Mike filtrować ? nawet to nie jest potrzebne
    $query=”SELECT * FROM x WHERE a = ? AND b = ?”
    $db->execute($query, $a, $b);
    i tyle, ew. if żeby a i b nie były za długie ( no bo po co męczyć baze noobkami ślącymi 16kB parametry)

  13. Co innego gdyby chodziło o pytanie, ale jeśli idzie o odpowiedź to czy zahashowanie jej nie jest wystarczającym rozwiązaniem? Ew. jeszcze zamieniać wszystkie litery na małe.

  14. @middleofdreams: Małe litery to raczej kosmetyka, dla silnika bazy danych nie ma znaczenia, czy napiszesz “SELECT”, czy “select”.

  15. @Tomko middleofdreams raczej miał na myśli trzymany w bazie hash(lowercase(odpowiedz_na_pytanie)), a przy porównywaniu: if(hash(lowercase(odpowiedz_na_pytanie_z_formularza)) == hash_zapisany_w_bazie)
    return ok;
    a nie samą zamianę wielkich liter w zapytaniu sql na małe.

  16. a czy * or 1=1 or 1=* przy logowaniu zadziała?
    Gwiazdki zamiast apostrofów bo blokujecie…

Twój komentarz

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

RSS dla komentarzy: