Odrzucenie wykonania skryptu z innej domeny

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.

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.

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

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ć.

0

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

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.

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ć :>

0

sprawdzaj HTTP_REFERER

0

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1