Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JSONP] Plik JS aktywny tylko gdy wywoływany jest z konkretnej domeny
Forum PHP.pl > Forum > XML, AJAX
fenix.robi
Witam,

pewnego czasu stworzyłem widget wyświetlający treść, który można odpalić na innej stronie.

JS --------GET---------> PHP ----calback(data)----> JS

I w js wstrzykuje dane do strony, która korzysta z widgetu.

Niestety niektórzy ściągają plik JS na swój serwer, i modyfikują widget jak i dane, chciałbym tego uniknąć, i stosować jakiś komunikat jeśli JS byłby wywoływany z innej domeny niż plik PHP.
Czy istnieje jakiś sposób na zabezpieczenie skąd dołączany jest skrypt JS?
timon27
Idealnie zrobić się nie da.
Jakkolwiek zabezpieczysz skrypt każdy może go sobie pobrać.

Ale możesz utrudnić im poprzez:
(piszę z ręki, więc mogą być błędy)
  1. var url=document.URL;
  2. var domena=url.hostname;
  3. if(domena=='mojadomena.pl'){
  4. //CAŁY DOTYCHCZASOWY KOD
  5. }

Następnie plik js 'zaciemnić', co już nie będzie łatwe.
Proponuję najpierw zamienić nazwy zmiennych na jednoliterowe,
potem go skrócić:
http://closure-compiler.appspot.com/home
a potem skorzystać z jakiegoś obfuscatora:
http://javascriptobfuscator.com/
timon27
To dalej to samo co napisałem.
Tylko że zamiast if sprawdzającego host dasz ifa sprawdzającego token/datę.
Tak samo: złodziej zobaczy ifa i sobie usunie.
Musisz więc mocno zaciemnić kod aby mu się nie chciało.

Pytanie: po co to robisz?
timon27
Ale ty robisz teraz tylko ochronę przed hotlinkowaniem.
Jeśli ktoś już wszedł na twoją stronę to ma ten plik na kompie.
Wrzuca sobie na serwer i działa bo w js nie zamieściłeś żadnych zabezpieczeń.

Pytanie: po co to robisz?
W sensie dlaczego ci zależy aby nie modyfikowali twojego widżetu?
Co ci przeszkadza że ktoś idzie na skróty?
To ich sprawa jak coś zepsują.
Tak bardzo 'cenny' jest ten plik że nie chcesz się nim dzielić?
trueblue
Nawet jak zrobisz token, to będzie można podejrzeć odpowiedź na żądanie lub podglądać ruch sieciowy.
Zabezpieczającego w 100% rozwiązania nie ma.
owca_82
Jeżeli myślisz że uniemożliwisz komuś pobranie i zmodyfikowanie swojego skryptu js to jesteś w błędzie - możesz co najwyżej, jak ktoś już tutaj wspominał próbować go zaciemnieć, ale i to można "rozgryźć" smile.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.