Odrzucenie wykonania skryptu z innej domeny

Odrzucenie wykonania skryptu z innej domeny
RE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 44
0

Witam.
Mam problem, otóż napisałem swoją gierkę w PHP (sam serwer) reszta jest w HTML + AJAX (zapytania na ten serwer).
I pewni ludzie podszyli się tworząc pseudo nowy serwer, ale zapytania idą na mój php.

Jak zabezpieczyć się przed tego typu sytuacją
Robiłem $_SERVER["HTTP_ORIGIN"] == "http://domena" i działało tylko na Chromie :/ Mozilla nie przesyła tego Origin

Proszę o pomoc.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Sensownego zabezpieczenia nie ma - nagłówki HTTP mogą być fałszowane.
Najwyżej możesz spróbować dodawać jakiś specjalny hash do każdego żądania, który będziesz po stronie serwera sprawdzał, lecz koniec końców i tak to zostanie rozpracowane.

RE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 44
0

Dobra to inaczej opiszę problem:
Mam serwer w php: srv.php i gierke we Flashu która robi zapytanie do domena.com/server/srv.php
I pewna stronka pobrała flasha, podając ścieżkę serwer do mnie.
Próbowałem teraz na ciasteczkach zrobić.
Ale wykonuje się ten srv.php na mój adres i ciasteczka też przekazuje :/

Chyba żeby była możliwość zablokowania ładowania flasha z innej domeny niż z mojej

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
0

Na początek spróbuj sprawdzać co jest w $_SERVER['HTTP_HOST'], może temu komuś nie będzie się chciało bardziej grzebać.

RE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 44
0

Sprawdzałem i w tym problem że request jest na domena.pl a więc nie wiele mi da sprawdzanie HOSTa

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
0

Nie znam się wcale na flashu, ale skoro Twój flash wykonuje zapytania do Twojego serwera - to może daj w środku tego flasha jakąś metodę, funkcję która odpytuje Twój serwer przesyłając zarazem aktualny adres IP/nazwę hosta. Wątpię, żeby osoba podkradająca flasha była w stanie zrobić jakiś reverese engineering (ale jeszcze raz powtórzę, nie znam się na flashu). Zrób listę dozwolonych ip/hostów i sprawdzaj to przy połączeniu. W razie potrzeby poczytaj jeszcze o Same Origin Policy. Ew. może by coś pomogło zastosowanie tokenów, ale wtedy byś musiał wpleść do html'a/ajaxowych żądań wstawki z php'a.

Poza tym.... daj jakiś regulamin, licencję, ostrzeżenie o tym że skrypt jest dostępny tylko na Twojej stronie, nie zezwalasz na jego pobieranie (mam nadzieję że nie ma tam żadnego przycisku download obok tego flasha) i jeśli ktoś to złamie - najpierw musisz skołować adres IP tej osoby, idąc dalej o ile Twoja gierka ma konta użytkowników, wybadaj skąd pochodzą i roześlij ostrzeżenia jakieś. Jeśli chcesz to możesz też nam opisać jak dowiedziałeś się o tym że "pewna stronka" podebrała Ci skrypt. Bo skoro znasz stronkę, to wystarczy napisać do admina albo skorzystać z whois.

dealer00
  • Rejestracja: dni
  • Ostatnio: dni
0

Rozumiem, że sam flash jest wyświetlany jako część Twojej strony?
Jeśli tak, możesz generować stronę, która będzie przekazywać do flasha token ( <param name=" .... ), który będzie generowany po stronie php na podstawie HTTP_HOST, REMOTE_ADDR + kilku dodatkowych zmiennych.
Po stronie flasha do każdego zapytania do serwera będziesz wysyłał dodatkowo ten token.
Po stronie serwera, przy okazji każdego zapytania generujesz token i sprawdzasz czy się zgadza z otrzymanym od flasha.

Myślę, że powinno zadziałać :>

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

sprawdzaj HTTP_REFERER

TG
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
  • Postów: 11
0

Musisz tak robić, jak mówi Patryk27.
Na przykład hash = md5($domain.$date.$sekret_key) i po pobieraniu te dane musisz sprawdzać.

ŁF
  • Rejestracja: dni
  • Ostatnio: dni
1

Możesz co jakiś czas zmieniać url, spod którego dostępne jest API gadajace z flashem, a także nazwy metod i kolejność parametrów. W ten sposób wymusisz, żeby złodziej aktualizował też swoją kopię aplikacji. Będzie musiał zaciągać nowe wersje od Ciebie, a Ty w międzyczasie będziesz mógł swój kod źródłowy zobfuscować i umieścić w nim sprawdzanie strony, na której flash został osadzony. Możesz też podzielić zabezpieczenie pomiędzy as a js (ExternalInterface, o ile dobrze pamiętam), a js zminifikować i/lub zobfuscować.

Przesyłanie hasha oraz inne kombinacje nie mają sensu do momentu, kiedy złodziej będzie w stanie zdekompilować kod, łatwo usunąć/obejść dane zabezpieczenie i skompilować go ponownie. Dlatego moim zdaniem bez obfuskacji ani rusz.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.