Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JS] odczytywanie cookie innej witryny
Forum PHP.pl > Forum > PHP
kors4r
Witam!

Przyszedłem tutaj z nadzieją, że znajdę odpowiedź na pytanie jak można w PHP odczytać zawartość danych cookie ustawionych przez inne witryny. Przeszukałem forum i znalazłem ciekawy wątek, w którym stoi po pierwsze, że się nie da, a po drugie, że nie pomagacie w hakowaniu smile.gif

Tak po prawdzie nawet nie wiem jak zadać Wam pytanie, więc muszę opisać z czym próbuję się zmierzyć.

Chcę postawić na drupalu stronkę dla znajomych, z którymi gram w grę przeglądarkową plemiona. Na tej stronie będą pewnie różne informacje, które nie powinny być widoczne dla innych osób, niż ludzie z mojego plemienia (w grze plemiona gracze łączą się w grupy, zwane plemionami, a plemiona zwalczają się nawzajem). Sprawdziłem, że gra plemiona ustawia określone ciastko. Pomyślałem, że w drupalu dodam kod php, który będzie odczytywał te dane i na tej podstawie sprawdzał, czy przeglądający stronę jest członkiem mojego plemienia.
Otóż: gra plemiona ustawia ciastko z ID wioski, ID wioski jest ustawiane, gdy właściciel tej wioski przegląda w grze stronę głównego widoku wioski. Czyli: ciastko z ID wioski należącej do mojego plemienia jest ustawiane wyłącznie u gracza, będącego właścicielem wioski. W drupalu można zrobić listę wiosek graczy i ich wiosek (w tabeli) i sprawdzać, czy wioska w ciasteczku jest wioską zalogowanego gracza. Jeśli nie - to wylogowywać użytkownika z określonym komunikatem.

No ale na stronie drupala ciasteczka z strony www gry nie odczytam (prawda?).

Pytanie moje brzmi: jak w takim razie zrobić weryfikację tego, że stronę drupala przegląda ktoś, kto należy do mojego plemienia?

Odpada przesyłanie tymcasowych, jednorazowych haseł na maila, czy też na konto w grze, bo te dane można odczytać i przekazać graczowi z wrogiego plemienia. Konieczne jest takie rozwiązanie, które będzie niezauważalne dla zwykłego użytkownika i na które zwykły przeciętny użytkownik kompa nie może wpłynąć.

Odpada też niestety sprawdzanie strony, która do drupala przekierowała. Teoretycznie możnaby w grze umieścić linka do strony drupala, a w drupalu sprawdzić, jaka strona kierowała do niego. Niestety - nie można przejść bezpośrednio ze strony gry do strony zewnętrznej, bo w grze jest taki specjalny mechanizm kierowania najpierw do strony zawierającej ostrzeżenie, że następuje przekierowanie na zewnętrzną stronę i żeby tam nie podawać hasła z gry.

Można użyć JS. Mogę zmusić wszystkich w grze do używania Greasemonkey, stworzyć jakiś skrypt instalowany w Greasemonkey, który pobierałby dane z gry, jakoś gdzieś zapisywał (tak jak cookie) i potem odczytywać to na stronie drupala. Da się to zrobić? Jest jakaś opcja?

Może macie inne pomysły?

kurde, chyba kiepsko szukałem

znalazłem takie coś:
http://wortal.php.pl/phppl/Wortal/Artykuly...wiadamy-za-wady

Stoi tam, że w JS mogę tworzyć ciastka i podawać domenę, pod którą ciastko ma być dostępne

Czy jest możliwe, aby skrypt uruchamiany na stronie A (strona gry) utworzył ciasteczko, które będzie miało podane jako domenę, w której ciastko jest dostępne stronę B (stronę drupala)questionmark.gif

Jeśli tak, to miałbym rozwiązanie: skrypt instalowany w Grasemonkey, który tworzy ciastko dostępne na stronie drupala, wpisując dane z ID wioski biggrin.gif
Fifi209
Cytat(kors4r @ 12.10.2010, 17:48:44 ) *
Można użyć JS. Mogę zmusić wszystkich w grze do używania Greasemonkey, stworzyć jakiś skrypt instalowany w Greasemonkey, który pobierałby dane z gry, jakoś gdzieś zapisywał (tak jak cookie) i potem odczytywać to na stronie drupala. Da się to zrobić? Jest jakaś opcja?

Możesz wywołać skrypt na swojej domenie za pomocą greasemonkey, przekazując odpowiednie parametry w get. smile.gif
kors4r
Cytat(fifi209 @ 12.10.2010, 18:47:14 ) *
Możesz wywołać skrypt na swojej domenie za pomocą greasemonkey, przekazując odpowiednie parametry w get. smile.gif


aha, to super, tylko, że nie rozumiem tongue.gif

fifi - dzięki za odpowiedź, ale muszę Cię prosić o wyjaśnienie, bo chyba jestem większym laikiem, niż mi się wydawało smile.gif

piszesz, że mogę wywołać skrypt na swojej domenie, ale chodzi Tobie o to, że można zrobić w ten sposób, żeby przy przeglądaniu stron na serwerze plemion uruchamiał się skrypt zapisany na moim serwerze?

wiem, że tak się da, tylko, że nie łapię co mi to daje

mnie chodzi zasadniczo o weryfkację, że osoba wchodząca na stronę na moim serwerze jest członkiem mojego plemienia
Fifi209
Jeżeli uruchomisz skrypt greasemonkey'a na stronie plemion, który wywoła skrypt na TWOJEJ domenie z odpowiednimi parametrami tj. np. cookie jak chciałeś to będziesz mógł go w jakiś sposób zweryfikować - choćby po ip (przecież w ciągu sekund się nie zmieni) smile.gif
zegarek84
Cytat(kors4r @ 15.10.2010, 22:37:41 ) *
mnie chodzi zasadniczo o weryfkację, że osoba wchodząca na stronę na moim serwerze jest członkiem mojego plemienia

tutaj zbyt wielkiego zabezpieczenia nie potrzebujesz - po co ktoś miałby się trudzić i wysyłać do Ciebie na serwer info o cudzych farmach których defakto jest multum i nie da się tego normalnie przefarmićquestionmark.gif - dla Ciebie moim zdaniem wystarczyłby identyfikator użytkownika z plemion który byś przekazywał w zapytaniu getem [jest to po prostu numer przypisany użytkownikowi (na pewno wiesz gdzie co i jakie info skoro chcesz zbierać informacje ze strony)...

możesz jeszcze w parametrze get przekazywać coś w stylu indywidualnego klucza użytkownika i dokłądnie opisać gdzie powinien i jak zmienić zmienną w skrypcie lub po prostu wywołasz konfigurację i zapiszesz tą informację np. po stronie greasemonkej ale nie w cookies tylko w ustawieniach mozilli - nie pamiętam jak się to nazywało...

parametry na swój serwer możesz wysłać np podpinając skrypt php jako pseudo obrazek i tam modyfikować zmienne - czyli coś w deseń:
var oImg = new Image;
// tutaj jeszcze mógłbyś podpiąć akcję nasłuchujacą ale nie musisz czy dostałeś odpowiedź zwrotną oImg.onload=funkcja;
oImg.src = 'adres do Twojej strony z parametrami get';

w ten sposób możesz też napisać userscripta i pod operę i pod IE... ale jeśli się ograniczas do samego greasemonkey to tam nie trzeba stosować takich tricków gdyż w nim jest możliwość wykonywania bezpośrednich zapytań ajax na inne domeny - co daje Ci większą intereakcję gdyż możesz użytkownikom wyświetlać szereg informacji już z Twojej strony [listy farm itd...] - jednak poczytaj na stronie greasemonkey jak nie wchodzić zmiennymi w obiekt window byś miał anonimowy ten skrypt... fakt chcący coś wyświetlić będziesz zmieniał dom czyli coś w window.... w operze i IE informacje ze swojego serwera na stronę plemion możesz przekazywać za pomocą JSON'a - a dokładnie jak obejść ograniczenie na domenę to wpisz w google JSONP - jednak w tych przeglądarkach staraj się napisać obiekt maksymalnie anonimowy nie zostawiający żadnych zmiennych w window [czasami robili małe zrzuty zmiennych]...

jeśli z kolei chciałbyś listę z farmami wyświetlać użytkownikom na swoim serwerze z klikalnymi linkami w taki sposób, by nie był przekazywany referer na serwer plemion to przeanalizuj ten kodzik [można było to trochu inaczej zrobić - ten kodzik akurat skopiowałem ;p]:
Kod
function doNoRefRedirect(url){
  // alert('hello!');
  
  hide_referer = window.open ("about:blank", "_blank", "");
  
  hide_referer.document.write("<html>");
  hide_referer.document.write("<head>");
  hide_referer.document.write("</head>");
  hide_referer.document.write("<body>");
  hide_referer.document.write("<meta http-equiv=\"refresh\" content=\"0;url=" + url + "\">");
  hide_referer.document.write("</body>");
  hide_referer.document.write("</html>");
  hide_referer.document.close ();
}


jednak zaznaczę, że wszelkie listy w html'u z farmami zawsze tam były dozwolone - nie dozwolona jest ich automatyzacja ^^

ech - ale to dawno temu było ^^


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.