Odrzucenie wykonania skryptu z innej domeny

Odrzucenie wykonania skryptu z innej domeny
RE
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • 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
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:ponad 2 lata
  • 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.


edytowany 2x, ostatnio: Patryk27
RE
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • 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

edytowany 2x, ostatnio: Reveres
mr_jaro
  • Rejestracja:ponad 14 lat
  • Ostatnio:prawie 4 lata
  • 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ć.


It's All About the Game.
RE
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • 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:prawie 18 lat
  • Ostatnio:około 20 godzin
  • 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.

edytowany 2x, ostatnio: axelbest
dzek69
reverse engineering flasha to zapuszczenie prostego programiku i wszystko masz jak na dłoni
axelbest
o.. nie wiedziałem. A są może jakieś obfuskatory na to?
dealer00
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 3 lata
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
co za problem pobrać jego stronę i użyć tego samego tokena? :P
dealer00
jeśli na token będzie składać się np. wersja przeglądarki, ip itp. to "ukradziony" token nie będzie się zgadzał z wygenerowanym dla żądania.
dzek69
Moderator
  • Rejestracja:prawie 19 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Rzeszów
0

sprawdzaj HTTP_REFERER


TG
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 8 lat
  • 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
Moderator
  • Rejestracja:około 23 lata
  • Ostatnio:14 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.


edytowany 1x, ostatnio: ŁF

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.