Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 190 Pomógł: 0 Dołączył: 12.02.2004 Skąd: Poznań Ostrzeżenie: (0%)
|
Pytania o streszczenie wątku, posty z "genialnymi" skryptami nadającymi się tylko na przedszkole i inne tego typu, będą bez ostrzeżenia usuwane przez moderatorów.
To mówiłem ja, Jarząbek... znaczy nospor dnia 2007-12-10 ------------------------------------------------------------------------------- SQL Injection (zwane też "SQL Insertion") to (rzekomo) najprostszy sposób włamu na stronę. Spowodowany jest on niepełnym sformułowaniem zapytań do MySQL. Przykład. Dajemy na stronie możliwość edycji profilu. Zapytanie do SQL wygląda następująco:
Osoba włamująca się na stronę umieszcza całkiem prosty, odpowiedni ciąg znaków/poleceń w dowolnym polu edycji tego profilu, który wygląda np. tak (dla zmiany hasła użytkownika o dowolnie wybranym, przez atakującego numerze ID):
W taki oto prosty sposób, osoba atakująca zmieniła hasło użytkownikowi o ID=1 (zazwyczaj administrator). W podobny sposób można również wyciągnąć dowolne dane z tabeli SQL. W każdym razie. Poszperałem, pomyślałem i zebrałem wszystko do kupy. Zamieszczam to tutaj razem, oraz proszę o rozbudowanie tego topica, gdyż nie znalazłem na tym forum więcej informacji o "SQL Injection". Oto co możemy dokonać: 1. Możemy sformułować nasze zapytanie do SQL tak:
2. Przy wstawianiu numerów ID do zapytań należy stosować tzw. rzutowanie typów:
3. Przy wstawianiu tekstów, należy wyciąć niebezpieczne znaki przy pomocy funkcji:
Może nie ma tego dużo, ale jest to już jakaś podstawa do zabezpieczenia strony/skryptu przed prostym i niezwykle niebezpiecznym, SQL Injection. Proszę osoby obeznane w tym temacie, aby dopisały tu własne propozycje metod zabezpieczenia się przed tym atakiem. Ten post edytował Najki 14.02.2008, 10:04:12 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 6.07.2005 Ostrzeżenie: (0%)
|
Cytat(qeuw @ 2005-09-28 20:08:04) Otóz zrobilem funckje która zamienia wyrażenia sql na np. z UnIoN na !union!. Sądze że to w miare skuteczna metota... Fakt... tylko po co? KAŻDE zapytanie można skutecznie zabezpieczyć przed SQL Injection, bez usuwania z niego słów kluczowych SQLa, a jedynie poprzez odpowiednią filtrację danych, przed podstawieniem ich do zapytania. Przez "Filtrację" rozumiem wykonania np. addslashes (albo lepiej funkcji, którą podałem wcześniej) lub np. intval tam, gdzie jest to konieczne - w zależności od kontekstu. Ciekaw jestem jak rozwiążesz sprawę, kiedy "UNION" powinno się zapisać w bazie danych, np. w jakiejś treści wyświetlanej później na stronie WWW? Fakt, można zamieniać np. na "!union!", a potem przy wyświetlaniu z powrotem na "UNION", ale po co? Jak ktoś mi pokaże jak wykorzystać "UNION" do wykonania SQL Injection w prawidłowo zabezpieczonym skrypcie - np. takim, jak podawałem w tym temacie kilka postów wcześniej - to będę bardzo wdzięczny. Wg mnie jest to niemożliwe. Po co w takim razie narzucać sobie jakieś sztuczne ograniczenia, polegające na niemożności wystąpienia w rekordach bazy danych jakichś słów (np. "UNION")? Ten post edytował logeen 29.09.2005, 20:01:40 |
|
|
|
Najki SQL Injection/Insertion 24.11.2004, 23:13:57
Vengeance Cytat(Najki @ 2004-11-25 00:13:57)Oto co może... 24.11.2004, 23:34:40
ActivePlayer Z tego co wiem to mysql nie wykonuje zapytan typu ... 25.11.2004, 00:06:02
Najki Cytat(Vengeance @ 2004-11-25 00:34:40)punkt 1... 25.11.2004, 00:22:22
Kinool zabezpieczenie w stylu:[PHP] pobierz, plaintext ... 25.11.2004, 08:48:38
johnson Cytat(Kinool @ 2004-11-25 07:48:38)to co ma b... 6.12.2004, 09:23:12
Najki Owszem dodaje, ale chyba tylko, gdy na serwerze je... 6.12.2004, 09:29:56
Seth Dodam jeszcze te dwa linki:
http://www.nextgenss.c... 6.12.2004, 12:32:14
morrison Temat ciekawy, ale w zasadzie nie wiem jeszcze co ... 26.02.2005, 17:20:37
ActivePlayer przyklad:
[PHP] pobierz, plaintext <?php $... 26.02.2005, 21:45:06
sopel Cytat(ActivePlayer @ 2005-02-26 21:45:06)ale ... 26.02.2005, 23:41:07
Vengeance przez mysql_query() nie. ale funckje postgreSQL ju... 27.02.2005, 14:44:07
Riklaunim dość często jest WHERE coś = liczba gdzie coś jest... 27.02.2005, 14:49:14
MoD Ja do liczb stosuje najczęściej ereg" title="Zobac... 27.02.2005, 17:45:48
MStaniszczak CytatJa do liczb stosuje najczęściej ereg (zwłaszc... 28.02.2005, 03:21:48
Vengeance @MStaniszczak: podobnież "is_numeric(), is_in... 1.03.2005, 17:20:41
MStaniszczak @Vengeance:
Więc działa to tak:
is_numeric() - sp... 1.03.2005, 23:15:12
Vengeance @MStaniszczak: ja tam nie wiem Mówie tylko co czy... 2.03.2005, 22:22:51
MStaniszczak @Vengeance: Ano analizowałem Zend Engina dość dokł... 2.03.2005, 22:43:20
krzemian W PHPBB też jest coś takiego używane, ale - znowu ... 3.03.2005, 17:09:35
Seth To o czym piszesz sprawdza sie przy liczbach, nato... 3.03.2005, 18:08:48
MStaniszczak @krzemian:
CytatOstatnio zrobiłem coś takiego na ... 3.03.2005, 20:40:59
ActivePlayer Moze ktos napisze klase, lub zbiór funkcji, alby u... 3.03.2005, 21:23:10
MStaniszczak Ja używam czegoś takiego (ma już swoje latka - dod... 3.03.2005, 23:18:12
docent no to i moje 3 grosze. primo: nie ma to jak szczyt... 4.03.2005, 00:18:29
Vengeance @docent: szczerze to zadna nowosc
----
Przez chw... 4.03.2005, 19:04:20
MStaniszczak CytatPrzez chwilke pomyslalem, ze mozna by zmienne... 4.03.2005, 19:08:24
docent Cytat(Vengeance @ 2005-03-04 20:04:20)@docent... 4.03.2005, 23:48:57
tara w sumei można też tak, np. dla newsów:
[PHP] pobie... 2.04.2005, 17:32:31
limak CytatTo blokuje wysiwetlanie newsa np. 9999 jak i ... 11.04.2005, 21:05:08
tara heh no ale jak ktoś wprawdzi DROP TABLE itp. to te... 11.04.2005, 21:06:48
MoD Cytat(MStaniszczak @ 2005-02-28 04:21:48)Hmmm... 11.04.2005, 21:33:24
tarlandil IMHO dosc wygodna i bezpieczne rozwiazanie:
[PHP] ... 29.04.2005, 07:47:36
J4r0d Cytat(Vengeance @ 2005-02-27 13:44:07)przez m... 8.05.2005, 17:11:33
sopel Cytat(J4r0d @ 2005-05-08 17:11:33)Cytat(Venge... 8.05.2005, 17:35:35
johnson Cytat(J4r0d @ 2005-05-08 16:40:02)Więc, które... 8.05.2005, 17:46:29
sopel addslashes() (jeden raz!!!) powinno w ... 8.05.2005, 17:48:08
Peter Riley Smieszne sa te wasze rozwazania, nie szkoda czasu?... 8.05.2005, 17:49:40
J4r0d CytatNie rozumiem o co Wam chodzi z tym addslashes... 8.05.2005, 17:56:50
Peter Riley Cytat(J4r0d @ 2005-05-08 16:56:50)Bezpieczeńs... 8.05.2005, 18:43:03
J4r0d Cytat(Peter Riley @ 2005-05-08 17:43:03)oczyw... 8.05.2005, 19:08:08
Peter Riley Cytat(J4r0d @ 2005-05-08 18:08:08)Cytat(Peter... 8.05.2005, 19:47:55
sopel Cytat(Peter Riley @ 2005-05-08 18:43:03)addsl... 8.05.2005, 22:14:33
Kinool panowie!!!!
juz ktos pisal o tym ... 9.05.2005, 00:14:50
Peter Riley Cytat(sopel @ 2005-05-08 21:14:33)smiem twier... 9.05.2005, 01:28:44
ktuvok Dorzucę się do tego wątku i powiem, że moim zdanie... 14.05.2005, 20:58:57 
J4r0d Cytat(ktuvok @ 14.05.2005, 19:58 ) Dorzuc... 29.05.2006, 22:28:55
Vengeance Cytat(Peter Riley @ 2005-05-08 19:43:03)Cytat... 14.05.2005, 21:44:37
bolas a takie pytanko jeszcze.
czy umozliwienie stoso... 16.05.2005, 23:02:57
bolas wszystkie znaki - oczywiscie przy wlaczanej dyrekt... 18.05.2005, 14:56:35
kubatron Nie wiem czy był dawany ten link lecz jeśli nie to... 22.05.2005, 10:18:04
gu35t mozna sie legalnie sprawdzic:
http://peanix.ath.cx... 29.06.2005, 19:08:01
logeen Cytat(Vengeance @ 2005-05-14 20:44:37)Union d... 6.07.2005, 13:03:21
Vengeance Wiadomym jest, że nie w każdym się da... ale są pr... 7.07.2005, 19:53:24
johnson Nie zapominajmy, że przy union włamywacz musi znać... 7.07.2005, 20:04:31
Vengeance IMHO pokaz mi programiste co nie trzyma loginow i ... 7.07.2005, 20:07:40
logeen Cytat(Vengeance @ 2005-07-07 18:53:24)Gdy kto... 7.07.2005, 21:03:48
Vengeance Dlatego, że w takim forum wykonuje się masę zapyta... 7.07.2005, 23:35:32
logeen To jasne, ale zależy, co rozumiesz przez "fil... 8.07.2005, 01:01:33
Vengeance 1. A kto mówi że strona musi traktować o czymś gdz... 8.07.2005, 01:16:42
logeen ad.1) Czyli co? Jeżeli zamierzasz zbudować np. for... 8.07.2005, 02:34:26
MStaniszczak Nie ma sensu nic wywalać (filtrować żadnych słów).... 8.07.2005, 09:39:00
Imperior Oświećcie mnie proszę i powiedzcie, gdzie przy zdr... 8.07.2005, 09:45:52
Vengeance Imperior... są nawet tacy co robią
[SQL] pobierz,... 8.07.2005, 12:17:30
logeen @Vengeance: Z tą opowieścią, to się z Tobą zgodzę.... 8.07.2005, 12:36:26
Vengeance @logeen: Ale powiedzmy sobie prawde, że fora szkol... 8.07.2005, 12:53:05
johnson Mówcie co chcecie, ale czy jest ktoś w stanie poda... 8.07.2005, 12:57:26
logeen @johnson:
Odpowiedź brzmi: pełna filtracja (tzn. ... 8.07.2005, 13:32:36
brachu jezeli mozna wtracic swoje 3 grosze.... to testowa... 8.07.2005, 14:22:05
MStaniszczak A tu http://www.gajdaw.pl/varia/xss.html macie coś... 8.07.2005, 14:53:21
moron czyli co? mysql_escape_string, stripslashes
moglb... 25.08.2005, 09:58:28
logeen [PHP] pobierz, plaintext <?php/** * Wstawia zna... 25.08.2005, 19:37:06
qeuw Jak można zabazpieczyć stronę jeżeli mam where id=... 28.09.2005, 14:47:54
ActivePlayer CytatJak można zabazpieczyć stronę jeżeli mam wher... 28.09.2005, 15:14:44
h.4 Mam takie pytanie...
[PHP] pobierz, plaintext ... 28.09.2005, 18:05:34
ActivePlayer Cytata jeśli zamiast _GET będzie _POST z jakimś te... 28.09.2005, 18:54:36
wojto Cytat(h.4 @ 2005-09-28 19:05:34)i teraz jak z... 28.09.2005, 20:45:54
qeuw Otóz zrobilem funckje która zamienia wyrażenia sql... 28.09.2005, 21:08:04
MalyKazio Prawdę mówiąc ten temat jest strasznie zaśmiecony.... 15.01.2006, 12:40:44
Vengeance MalyKazio: Znów ci się "oberwie" odemnie... 15.01.2006, 12:50:59
the_foe [PHP] pobierz, plaintext <?php$win="xA5xC6... 23.02.2006, 02:40:09
kofaniutki_misio Witam,
Czytałem posty na temat zabezpieczeń na st... 26.02.2006, 19:46:34
vedeney Sorry that not Polish,
but your functions are so ... 28.02.2006, 14:33:07
kofaniutki_misio hej vedeney. funkcja logs, jest przepisana. Global... 28.02.2006, 22:08:23
dr_bonzo [PHP] pobierz, plaintext <?php$age = $_GET... 28.02.2006, 23:28:36
vedeney Ok! I`ve understand you, But your code did... 1.03.2006, 08:53:31
the_foe Cytat(vedeney @ 2006-02-28 14:33:07)[PHP] pob... 2.03.2006, 19:35:09
LamaMASTER Cytatzabezpieczenie w stylu:[PHP] pobierz, plainte... 5.04.2006, 17:53:33
Pawel86 A takie rozwiazanie:
[PHP] pobierz, plaintext ... 5.04.2006, 22:36:28
Janek111 Mam taki problem:
Jesli uzyje mysql_real_escape_st... 16.04.2006, 17:47:42
em1X A szukac to nie potrafisz?
[SQL] pobierz, plainte... 29.05.2006, 22:36:35
J4r0d Próbując podsumować dyskusję, możnaby powiedzieć, ... 29.05.2006, 22:52:27
Termit_ Wówczas zawsze należy robić dodatkowe confirmy - f... 3.06.2006, 19:58:56 
J4r0d Cytat(Termit_ @ 3.06.2006, 18:58 ) Wówcza... 4.06.2006, 17:53:17
thornag Wedlug mnie mozesz jedynie sprawdzic czy Id nie je... 28.07.2006, 16:32:02
eai @J4r0d Bardzo prosto się można zabezpiec... 2.08.2006, 00:19:08 
J4r0d Cytat(eai @ 1.08.2006, 23:19 ) @J4r0d Bar... 2.08.2006, 15:12:09
Turgon Zgadzam się z Eai. Ja stosuje sumy plus sesje oraz... 2.08.2006, 08:37:09
eai @J4r0d Przecież to jest jeszcze prostsze
Przykł... 2.08.2006, 22:40:56 ![]() ![]() |
|
Aktualny czas: 1.12.2025 - 20:49 |