konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Jak w tytule. Wiem tylko, że przed liczbami (int). Ale czy to w zupełności wystarcza? A co ze stringami?
Rafał Kowalewski

Rafał Kowalewski IT Director, F3
Group

Temat: Jak bronić się przed atakami SQL Injection?

SELECT user, password FROM users WHERE user = '".htmlspecialchars($_POST['user'], ENT_QUOTES)."' AND password = '".htmlspecialchars($_POST['password], ENT_QUOTES)."'

powinno wystarczyćRafał Kowalewski edytował(a) ten post dnia 19.01.09 o godzinie 12:25
Maciej Marczuk

Maciej Marczuk Software Engineer

Temat: Jak bronić się przed atakami SQL Injection?

jezeli chodzi o php to:
http://pl.php.net/pdo
Arvind Juneja

Arvind Juneja Współtwórca @
Fangol.pl | Blogger
@ Fitback.pl

Temat: Jak bronić się przed atakami SQL Injection?

http://php-ids.org/ albo to...
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Jak bronić się przed atakami SQL Injection?

ty chyba faktycznie dostałeś bana na google
http://www.google.pl/search?q=how+to+prevent+sql+injec...
albo nie chce ci sie szukać...

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

dobrze kojarze, ze htmlspecialchars nie dziala z latin2?

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Wojciech Sznapka:
ty chyba faktycznie dostałeś bana na google
http://www.google.pl/search?q=how+to+prevent+sql+injec...
albo nie chce ci sie szukać...

Wiesz... wolę zapytać osoby które w tym siedzą, niż wejść na byle jaką stronkę i się zastanawiać potem czy to aby napewno działa czy nie.

Dzięki.

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Bartłomiej S.:
wolę zapytać osoby które w tym siedzą, niż wejść na byle jaką stronkę i się zastanawiać potem czy to aby napewno działa czy nie.

Bartku, zle podejscie. poczytaj netykiete (edit: ok, moze nie netykiete, a prawa grup dyskusyjnych).

NAJPIERW szukasz, potem probujesz robic. POZNIEJ pytasz pokazujac analitycznie co udalo Ci sie osiagnac i gdzie poległeś.Wojciech Zbigniew Piotrowicz edytował(a) ten post dnia 19.01.09 o godzinie 12:58

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Bartłomiej S.:
Jak w tytule. Wiem tylko, że przed liczbami (int). Ale czy to w zupełności wystarcza? A co ze stringami?

Ja staram się większość logiki 'pchać' do bazy danych (procedury, funkcje i wyzwalacze o ile pozwala na nie hosting). Dzięki temu escape'owanie następuje na poziomie wywoływania procedury. Dodatkowo wewnątrz zapytań można pokusić się o użycie funkcji QUOTE.

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Ja poprę post Maćka - zainteresuj się PDO, a zwłaszcza poczytaj o tzw. prepared statements, chociażby: http://pl.php.net/manual/pl/pdostatement.execute.php

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Rafał Kowalewski:
SELECT user, password FROM users WHERE user = '".htmlspecialchars($_POST['user'], ENT_QUOTES)."' AND password = '".htmlspecialchars($_POST['password], ENT_QUOTES)."'

Owszem htmlspecialchars ustrzeże lecz można jeszcze pomyśleć o backslash pomiędzy cudzysłowy/apostrofy
Rafał Korszuń

Rafał Korszuń co-owner @ Kleder

Temat: Jak bronić się przed atakami SQL Injection?

Przed tym atakiem nie obronisz się stosując htmlspecialchars() - ta funkcja się bardziej przydaje przy obronie przed XSS
:)

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Uzyj jakiejkolwiek biblioteki w ktorej bedziesz mogl wysylac zapytania z parametrami... nie chcesz miec sql injection - zasada nr 1: NIGDY ale to NIGDY nie kleimy zapytan (tasma klejaca, spinaczami, . ani +).

Lektura zeby przygotowac sie na lekcje:
http://www.unixwiz.net/techtips/sql-injection.html
Rafał Korszuń

Rafał Korszuń co-owner @ Kleder

Temat: Jak bronić się przed atakami SQL Injection?

a w sumie nawet nie zawsze przed xss tu masz przykład:
http://stackoverflow.com/questions/110575/do-htmlspeci...
Michał Ławicki

Michał Ławicki dostawca zadowolenia

Temat: Jak bronić się przed atakami SQL Injection?

filtrowac, walidowac, sprawdzac, kontrolowac, filtrowac ... :) a poza tym *_real_escape_string + http://www.beldzio.com/

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Sql injection zależy od bazy, dla mssql wystarczy:
- dla stringów zamienić ' na ''
- każdego spodziewanego numerka zcastować do int i z powrotem do string
dla mysql:
- dla stringów zamienić \' na \\' i ' na ''
- dla numerków jak wyżej

Najlepiej używaj frameworka do zapytań (może ORM?) i wtedy on za Ciebie sprawę załatwi najlepiej.

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Rafał Ziółkowski:
Uzyj jakiejkolwiek biblioteki w ktorej bedziesz mogl wysylac zapytania z parametrami... nie chcesz miec sql injection - zasada nr 1: NIGDY ale to NIGDY nie kleimy zapytan (tasma klejaca, spinaczami, . ani +).

Też się pod tym podpiszę.

Nie żadne real_escape_string, real_real_escape_string, ultimate_real_escape_string i tym podobne wynalazki. To jest ZŁA droga.

Do zapytań SQLowych stosuje się zawsze parametry. Nie wiem czemu tylko programiści PHP o nich nie słyszeli.

konto usunięte

Temat: Jak bronić się przed atakami SQL Injection?

Dawać odpowiednie uprawnienia użytkownikom bazy danych

1. jak ma wybierać z bazy to po grzyba ma ten sam użytkownik mieć uprawnienie do dodawania czegoś do bazy, bądź jakiekolwiek inne uprawnienia

2. Błędy nie wyświetlać jawnie, można je w prosty sposób wyeksportować do pliku i sobie potem przeglądać

3. Nie używać gotowców, struktura bazy danych jest znana nie tylko tobie ale i hackerom

4. Sprawdzać wpisywane przez użytkownika dane i ewentualnie filtrować znaki które się tobie nie podobają (brak spacji brak słów jak or and itp itd)

preg_match() - sprawdzanie czy nie użyto niedozwolonych znaków
str_replace() - dobrze się nadaje do tego aby wyciąć nie porządne struktury w "zapytaniu"

5. Zmiana na czas połączenia użytkownika delimiter'a ze standardowego ; na np tu_jest_koniec albo // do wyboru do koloru (nie jest wstanie zakończyć aktualnego zapytania i podesłać nowe)

Wiadomo są to dodatkowe utrudnienia ale nie tylko dla nas(programisty) ale i dla hackerów
Jakub L.

Jakub L. Programista

Temat: Jak bronić się przed atakami SQL Injection?

http://xkcd.com/327/



Wyślij zaproszenie do