Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP] Blokada Konsoli FireBug
Forum PHP.pl > Forum > Przedszkole
Sk0rp10n
Witam więc mam do was pewne pytanie trochę przeszukałem te forum i nigdzie nie mogłem nawet natknąć się na żaden temat z podobnym problemem czy coś więc pytam się was:

Czy moglibyście mi jakoś przedstawić w jaki sposób zablokować podgląd danych które są odbierane poprzez AJAX za pomocą plugina Firebug bądź innych narzędzi do przeglądarek zawierających konsole?? Kiedyś natknąłem się na takowe zabezpieczenie na jednej stronie gdzie zamiast danych zwrotnych jedyne co się wyświetlało to "<!-- Nie kradnij! --!>".

Z góry dziękuje za pomoc. wink.gif


Podkreślam nie chodzi mi o w pełni gotowy kod tylko o pomoc przy stworzeniu takowego zabezpieczenia. smile.gif
sowiq
Nie ma takiej możliwości. Możesz utrudnić podgląd tych danych, ale nie ma możliwości całkowitego zablokowania.

Jak utrudnić?
- szyfrować przesyłane dane
- sprawdzać referer'a
- używać jednorazowych URL (dodawać jakiś jednorazowy, losowy klucz)
Sk0rp10n
Możesz dokładniej wytłumaczyć w jaki sposób miałoby działać sprawdzanie referera jeśli dane są i tak tylko pobierane przez moją stronę i z innych źródeł nie ma dostępu do wywołania tej funkcji?

Oraz jeśli możesz wytłumaczyć trochę bardziej z tymi jednorazowymi losowymi kluczami gdyż kiedyś próbowałem skorzystać z jakiegoś poradnika o tym lecz całość w tym wypadku jest wysyłana do pliku zawierającego funkcje pod ajaxa gdzie sesja nie jest obsługiwana. W tym wypadku wydaje mi się iż przykładowo "md5(time())" nie za bardzo zda się do takowego zabezpieczenia.
sowiq
Sprawdzanie referera "zabezpieczy" tylko dla przypadków kiedy ktoś będzie chciał sobie wpisać adres Twojego AJAX'owego zasobu do paska adresu przeglądarki. W takim wypadku $_SERVER['HTTP_REFERER'] będzie puste i możesz wypluć magiczne "<!-- Nie kradnij! --!>" wink.gif

Losowe klucze są bardzo proste w działaniu. Robisz chociażby sha1(rand()) i zapisujesz to do bazy albo chociażby sesji. Przy requeście sprawdzasz czy klucze się zgadzają. Jeśli tak, to drukujesz tajne informacje i usuwasz klucz z bazy/sesji. Jeśli nie, to wiadomo - "<!-- Nie kradnij! --!>" wink.gif

Sposobów jest sporo. Ale tak jak napisałem wcześniej - to jest utrudnianie, a nie zabezpieczanie. Jeśli ktoś będzie na tyle ogarnięty, że będzie wiedział do czego służy Firebug, to na 99% obejdzie te utrudnienia.

[edit]
Jak dla mnie chyba najlepszym sposobem byłoby szyfrowanie danych po stronie serwera i rozszyfrowanie ich po stronie JavaScript. W Firebug co prawda będzie dało się podejrzeć odpowiedź serwera, ale żeby ją rozszyfrować trzeba będzie grzebać w JS. Do tego jakiś JS Uglify (żeby zaciemnić kod JS) i będzie git goatee.gif
Sk0rp10n
Dzięki za podpowiedź co do tokenu i zapewne z tego skorzystam. wink.gif Zabezpieczenie z Refererem mam niby dodane a FireFox wyłączone wysyłanie Referera a dane odbierać odbieram może po prostu mam jakiś błąd w kodzie który przeoczyłem. wink.gif


W takim razie jedyna odpowiedź czemu na jednej ze stron uzyskuje tą magiczną odpowiedź "<!-- Nie kradnij! --!>" jest spowodowana zablokowanym wysyłaniem Referera. wink.gif Także jeszcze raz dzięki i popatrzę czemu nie działa te zabezpieczenie u mnie. wink.gif

//Edit: Tak to był błąd u mnie w kodzie po ustawieniu "if(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']))" zadziałało poprawnie przy wyłączonym Refererze. wink.gif Teraz zabieram się za tworzenie tokena. Jedynie mam nadzieje że zadziała poprawnie w przypadku gdy ktoś przypadkiem 2 razy kliknie na "zobacz". wink.gif
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.