Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zabezpieczyć skrypt który odpytuje bazę danych?
Forum PHP.pl > Forum > PHP
adam1024
Posiadam skrypt php do którego poprzez AJAX'a wysyłam wartość metodą POST - $_POST['wartosc'] i taką też wartość odbieram, wykonuję zapytanie do bazy oraz zwracam odpowiedź. W jaki sposób mogę zabezpieczyć ten skrypt tak aby nikt bezpośrednio się do niego nie mógł odwołać. Generalnie chodzi mi o to by uniknąć jakiegoś ataku prosto na ten skrypt, np. od jednego użytkownika.
Pyton_000
możesz sprawdzać ew. czy request jest wykonany przez ajax.
Możesz też generować tokeny i sprawdzać zgodność (technika z CSRF)
adam1024
zastosowanie tokenów jest względnie bezpieczne tak?
redeemer
Co to znaczy "atak prosto na ten skrypt", bo chyba nie o CSRF Ci chodzi.

Cytat(Pyton_000 @ 27.05.2015, 10:07:14 ) *
możesz sprawdzać ew. czy request jest wykonany przez ajax.
Żadne zabezpieczenie.
adam1024
mam skrypt np. ( baza.php ) który po wykryciu zmiennej $_POST['wartosc'] wykonuje zapytanie w bazie danych. W jaki sposób zablokować osobie która chciałaby mi zaszkodzić możliwość automatycznego odpytania bazy . By nie mógł wysłać z automatu jakimś programem danych POST co przełożyłoby się na dużą ilość zapytań w bazie, czy nawet przyblokowanie serwera
Pyton_000
Cytat(redeemer @ 27.05.2015, 10:16:17 ) *
Co to znaczy "atak prosto na ten skrypt", bo chyba nie o CSRF Ci chodzi.

Żadne zabezpieczenie.

Może i żadne ale przynajmniej pierwsza linia oporu zdusi gimbazę smile.gif

Ale tutaj chyba jedyne sensowne jest zabespieczenie CSRF,
redeemer
Cytat(Pyton_000 @ 27.05.2015, 10:50:42 ) *
Może i żadne ale przynajmniej pierwsza linia oporu zdusi gimbazę smile.gif

Ale tutaj chyba jedyne sensowne jest zabespieczenie CSRF,

CSRF nie służy do tego przecież.

@adam1024: Jak się tak boisz o wydajność bazy danych to zaaplikuj jakiś mechanizm cache. Zresztą teraz też ktoś sobie może automat napisać, który po prostu będzie wchodził na Twoją stronę i też zapytania do bazy będą wykonywane (no chyba, że tam ich nie ma).
adam1024
Zrobiłem mechanizm tokenów, i jak narazie komuś raczej ciężko będzie teraz zawiesić stronę za pomocą np. jMeter'a - a wczoraj mi sie to udało, przy ustawieniu 200 użytkowników w przeciągu 1 sekundy bez przerwy przy zapytaniu bezpośrednim. Dziś jeszcze zrobiłem odstęp między keyupem ( więc trzeba poczekać około 3 sekund na wynik zapytania ) - w przypadku gdy ktoś sobie napisze ten automat będzie musiał poczekać te 3 sekundy ( niby niewiele ale zawsze jakaś "przeszkoda", "blokada" dla ciągłego wysyłania zapytań.

@redeemer - jakąś ciekawą literaturę, artykuł nt. cache'owania możesz polecić?
darek334
zabezpieczenie tokenowe jeśli tak samo to rozumiem jak ty, pomaga tylko przy powtórnym wysłaniu forma, chyba jak na moją wiedzę tylko blokada ip po pewnej liczbie zapytań na dany czas by pomogła...
Xelah
Cytat(adam1024 @ 27.05.2015, 11:45:00 ) *
Zrobiłem mechanizm tokenów, i jak narazie komuś raczej ciężko będzie teraz zawiesić stronę za pomocą np. jMeter'a - a wczoraj mi sie to udało, przy ustawieniu 200 użytkowników w przeciągu 1 sekundy bez przerwy przy zapytaniu bezpośrednim. Dziś jeszcze zrobiłem odstęp między keyupem ( więc trzeba poczekać około 3 sekund na wynik zapytania ) - w przypadku gdy ktoś sobie napisze ten automat będzie musiał poczekać te 3 sekundy ( niby niewiele ale zawsze jakaś "przeszkoda", "blokada" dla ciągłego wysyłania zapytań.

@redeemer - jakąś ciekawą literaturę, artykuł nt. cache'owania możesz polecić?


Jak już wspomniał @redeemer, CSRF nie służy do tego, co chcesz zrobić. Ty chcesz się zapespieczyć przez DOS a nie CSRF. Dwie kompletnie różne i nie związane ze sobą rzeczy.

Poza tym niedoceniasz jMeter. Napisanie prostego BeanShell-a, który najpierw zaczyta token, a później go wyśle do Ciebie to kwestia może 10 minut. W niczym Ci nie pomoże takie zabezpieczenie przed DOS.
Jeśli ktoś będzie chciał to zrobić to i tak to zrobi, bo tego się nie obsłużyć na poziomie kodu.

Podsumowując - Nie możesz ufać niczemu, co pochodzi z przeglądarki, bo sfałszowanie tego jest prostsze, niż zabrać dziecku cukierek.
Dodatkowo, nie martw się o DOS, bo nie masz strony, która jest odiwedzana przez miliony userów, i ktoś może chcieć Ci zaszkodzić. Jak już będziesz tak daleko, to będziesz miał środki na odpowiednie zabezpieczenie przed DOS.
Jak to ktoś mądry kiedyś powiedział: "Don't think about performance issue. You don't have performance issues... yet".
darek334
Po za tym tokeny w niczym nie uniemożliwiają odpytywania skryptu...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.