Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Autoryzacja curla
Forum PHP.pl > Forum > PHP
tosiek
Witam. Mam pytanie jak autoryzować curla w jakimś skrypcie ?

Chodzi mi konkretnie o to żeby tylko curl ze skryptu A mógł wejść na stronę ze skryptem B i mógł uzupełnić i wysłać formularz.

Zastanawiałem się nad jakąś autoryzacja GET (jakiś losowy ciag znaków w obu skryptach) ale czy da się poznać, podpatrzeć z jakim adresem łączy się curl ?

dla przykładu: tajny_kod=53sd7fs54fsd453dsf56s4fsfsd56f
  1. <?php
  2. $ch = curl_init();
  3. curl_setopt($ch, CURLOPT_URL, 'http://example.com/skrypt2.php?tajny_kod=53sd7fs54fsd453dsf56s4fsfsd56f');
  4. curl_exec($ch);
  5. curl_close($ch);
  6. ?>

skrypt do logowania:
  1. <?php
  2. if($_GET["tajny_kod"] == "53sd7fs54fsd453dsf56s4fsfsd56f")
  3. {
  4. //skrypt logowania + formularz
  5. }
  6. else
  7. {
  8. echo "Brak prostej autoryzacji";
  9. }
  10. ?>


Czy jest jakieś inne rozwiązanie, czy da się podpatrzeć ten kod w curlu ? Czy jest jakiś inny sposób ?
(wiem że muzę to prostackie rozwiązanie, ale jeśli nie wyświetlę $ch top nie da się chyba poznać adresu)
zegarek84
Cytat(tosiek @ 27.06.2009, 10:36:06 ) *
Zastanawiałem się nad jakąś autoryzacja GET (jakiś losowy ciag znaków w obu skryptach) ale czy da się poznać, podpatrzeć z jakim adresem łączy się curl ?

przecież to Ty ustalasz z jakim adresem łączy się curl blinksmiley.gif - napisz że jaką prostą funkcję lub klasę dla kurla gdzie parametrem będzie co najmniej adres z jakim ma się łączyć i gotowe guitar.gif
tosiek
wiem, ale adres będzie znany publicznie smile.gif i potrzebuję coś co nie dopuście ciekawskich aby tylko curl się mógł łączyć smile.gif
erix
Cytat
(wiem że muzę to prostackie rozwiązanie, ale jeśli nie wyświetlę $ch top nie da się chyba poznać adresu)

Stwórz jakiś algorytm, który wygeneruje token o takiej samej wartości w obu skryptach.

Albo np. negocjacja klucza, albo jakiś token bazujący na czasie żądania.
zegarek84
Cytat(tosiek @ 27.06.2009, 11:28:45 ) *
wiem, ale adres będzie znany publicznie smile.gif i potrzebuję coś co nie dopuście ciekawskich aby tylko curl się mógł łączyć smile.gif

przecież nie musisz publicznie wszystko pokazywać - zresztą głownie curl słuzy do łączenia się z innymi domenami - możesz jakąś funkcją albo zniekszałcić parametry get, albo po prostu tylko pod innym hostem - a jesli to ma być dla wąskiej grupy urzytkowników to logowanie do strony curla jeszcze dołuż - dokladnie nie wiem o co Ci chodzi - rozwiązanie poprostu dostosowywać trzeba do potrzeb winksmiley.jpg

osobiście curl o tyle mi się podoba że umożliwia mi i kilku znajomym grę na jednym koncie w tym samym czasie - a że czasu nie mamy to na wzajem się zastępujemy i w tym samym czasie jesteśmy zalogowani bo takie było założenie - ale nikt z zewnątrz nawet jeśli widział by adres na stronę nie wejdzie gdyż ona ma zapamiętane logowanie tylko dla kilku komputerów gdzie żywotność się przedłuża tylko jeśli się przegląda daną stronę....

a pozatym jesli chcesz parsować jakąś stronę to dla większej elastyczności porzuć przeszukiwanie strony na bazie wyrażeń regularnych a oprzyj to o DOM - świetne narzędzie winksmiley.jpg

ogólnie zabawa curlem o tyle też może się przydać że dodatkowo można szukać kolejnych metod prostych zabezpieczeń przed laikami - czyli jednym słowem jeśli coś dajemy publicznie w sieci to tego całkiem nie da się ukryć przed każdym lub przed zczytywaniem treści przez roboty - jednak poznając mechanizmy proste roboty nie mają szans winksmiley.jpg

[edit]

a jesli to ma być tylko autoryzacja między skryptami to dadaj jakiś dodatkowy parametr jaki ma wystąpić i możesz go przesłać postem - lub jakiś zakodowany mały ale malusieńki pliczek binarny jako klucz - wszystko zależy od potrzeb i siły zabezpieczenia winksmiley.jpg

ogólnie możesz też na skryptach zrobić wymóg dla każdej następnej strony referera oprócz strony głównej - przy czym dla dodatkowego zabezpieczenia to porównać referera z hostem na którym skrypt jest wykonywany - w ten sposób nawet przy bezpośrednim skopiowaniu adresu i wklejeniu w przeglądarkę nie wejdzie się na inną stronę nie wchodząc w pierw na stronę główną - dalej można przeglądać tylko jesli się przeglądało stronę z danego serwera - ogólnie pomysłów na zabezpieczenie można by wymyslać multum winksmiley.jpg
tosiek
jednak zrobiłem swoja prosta metodą:
  1. <?php
  2. include realpath(dirname(__FILE__) . "/" . "integratus/config.php");
  3. if($_GET["tajny_kod"] != $tajny_hashcode || empty($_GET["tajny_kod"]))
  4. {
  5. ?>


i ten sam plik config.php jest przy curlu i curl łączy się z tym tajnym kodem smile.gif

  1. <?php
  2. $url = $integratus_forum_login . "?tajny_kod=" . $tajny_hashcode;
  3.  
  4. $ch = curl_init();
  5. curl_setopt($ch, CURLOPT_URL, $url);
  6. ?>
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.