![]() |
![]() |
-Czy d- |
![]()
Post
#1
|
Goście ![]() |
Chodzi mi o ochronę przed SQL Injection. Do wszystkich swoich tabel odwołuję się za pomocą PDO, więc te zapytania są odporne na SQL Injection, ale na stronie korzystam też nie z mojego systemu newsów i ten system newsów niestety korzysta z czystego MySQL. Ten system udostępnia np. formularz do szukania w newsach, więc teoretycznie istnieje możliwość wstrzyknięcia czegoś.
Pytanie, czy takie zapytanie wpisane w formularzu wyszukiwarki w newsach może narobić szkód tylko w tabelach, z których korzysta ten system newsów, czy też w dowolnych tabelach (a więc również w moich) w bazie danych? Czy może nawet usunąć całą bazę danych? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Może usunąć całość w zależności od praw użytkownika. Dlaczego dajesz tag mssql a piszesz o mysql?
|
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
Może usunąć całość w zależności od praw użytkownika. Czyli co w takiej sytuacji mógłbym zrobić? Przenieść swoje tabele do innej bazy danych (czyli inny login i hasło)? Dlaczego dajesz tag mssql a piszesz o mysql? Moja pomyłka z tym tagiem. Jeżeli ktoś by mógł, to prosiłbym o poprawienie. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Zabezpiecz swój system newsów przed SQL Injection.
|
|
|
-Gość- |
![]()
Post
#5
|
Goście ![]() |
Problem w tym, że to nie jest mój system newsów. Wykorzystuje gotowy skrypt i nie wiem, czy zabezpieczenie tego przed SQL Injection nie byłoby zbyt pracochłonne?
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Do wszystkich swoich tabel odwołuję się za pomocą PDO, więc te zapytania są odporne na SQL Injection, NIekoniecznie. Już byli tu na forum geniusze co używając PDO nadal byli podatni na banalne SQLInjectionCytat Wykorzystuje gotowy skrypt i nie wiem, czy zabezpieczenie tego przed SQL Injection nie byłoby zbyt pracochłonne? My też nie wiemy... nie widzimy kodu... szklane kule padły...A może się wręsz okazać że wystarczy w trzech miejscach dac mysql_escape_string i po sprawie. |
|
|
-Gość- |
![]()
Post
#7
|
Goście ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie, jak źle użyjesz to nie zabezpieczy. Tak samo jak źle użyjesz pistolet to zabije Ciebie zamiast napastnika (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 18.03.2011 Skąd: R do M / Sanniki Ostrzeżenie: (0%) ![]() ![]() |
siemka
to mozna zastowować user_prof i o co tu chdzi jako admin masz dostep 1 lub connect by jakiś edytor, jeden ma full admina drugi do odczytu.
|
|
|
-Gość- |
![]()
Post
#10
|
Goście ![]() |
Nie, jak źle użyjesz to nie zabezpieczy. Tak samo jak źle użyjesz pistolet to zabije Ciebie zamiast napastnika (IMG:style_emoticons/default/wink.gif) Prawda. A co można zrobić nie tak? Bardzo mnie to interesuje, bo sam korzystam z PDO, a jestem początkujący i nie wykluczone, że i ja źle jego używam. |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Oj nie załapałeś aluzji o wróżkach.... Dobrze, napiszę wprost: podaj kod. Wróżek nie ma (IMG:style_emoticons/default/smile.gif)
Jak pokażesz jak używasz PDO to ci powiemy czy dobrze czy nie (IMG:style_emoticons/default/smile.gif) No ale ogólnie chodzi o bindowanie zmiennych, które to dopiero zabezpiecza przed sqlinjection |
|
|
-Gość- |
![]()
Post
#12
|
Goście ![]() |
Np.
$this->stmt = $this->db->prepare("SELECT * FROM $this->tabela ORDER BY id DESC LIMIT 1"); $this->stmt->execute(); foreach($this->stmt as $row) { $this->data = $row["data"]; } $this->stmt->closeCursor(); ......................... $this->stmt = $this->db->prepare("SELECT * FROM $this->tabela WHERE nr BETWEEN :zakres_od AND :zakres_do"); $this->stmt->execute( array( ':zakres_od' => $zakres_od, ':zakres_do' => $zakres_do)); ......................... $this->rows = $this->db->prepare("SELECT * FROM $this->tabela WHERE id= :id"); $this->rows->execute( array( ':id' => $id)); $this->rows_number = $this->rows->rowCount(); |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No i ok, używasz bindowania czyli robisz tak jak należy.
A te: $this->tabela to skąd się bierze? Ty ustalasz czy może to też użytkownik przesyła na serwer? |
|
|
-Gość- |
![]()
Post
#14
|
Goście ![]() |
To już ja ustalam (IMG:style_emoticons/default/smile.gif)
A gdyby ustalał użytkowników, to powinno się to również zbindować, tak jak poniżej?
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
To już ja ustalam (IMG:style_emoticons/default/smile.gif) A gdyby ustalał użytkowników, to powinno się to również zbindować, tak jak poniżej?
Od użytkownika w sensie, że może podać nazwę tabeli w inpucie czy też przesłać GET? A po co coś takiego robić? |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
W PDO nie można parametryzować nazw kolumn i tabel, jeżeli już sytuacja tego wymaga, to nie wstawiasz do zapytania tego co user wyśle tylko najlepiej zrobić coś takiego:
w ten sposób użytkownik może wybrać tabelę ale tylko z pośród tych które chcesz mu udostępnić. |
|
|
--Bonek-- |
![]()
Post
#17
|
Goście ![]() |
Mam podobną sytuacją - używam skrypt to newsów phpns:
http://sourceforge.net/projects/phpns/ Tyle, że jestem w otyle lepszej sytuacji, że skrypt ten nie udostępnia żadnego formularza (nie ma np. wyszukiwarki), po prostu wyświetla newsy. Wobec tego, jeżeli nie ma formularzy, to chyba user nie może w żadne sposób wstrzykiwać złośliwego kodu? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 20:55 |