Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Ajax][PHP] Bezpieczeństwo skryptów
Quantum
post
Post #1





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam, od jakiegoś czasu zacząłem stosować AJAX'a w swoich projektach.
Chciałbym zabezpieczyć plik PHP w ten sposób, aby zwracał dane tylko dla mojego skryptu, a po wejściu do tego pliku z zewnątrz (np: http://snifferwebpage.awardspace.biz/data.php) zwracał błąd.
Napisałem małe zabezpieczenie, ale chciałbym, żeby ktoś z Was je przetestował (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
BTW. sam próbowałem je ominąć, przy wykorzystaniu cURL'a na innym serwerze, ale się nie udało.

Link: http://snifferwebpage.awardspace.biz/

Pozdrawiam, sniff (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował erix 6.06.2009, 17:19:33
Powód edycji: [erix] chyba do ocen?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


hehe - masz tam jakieś zabezpieczenie przed floodowaniem czy tylko skrypt nie wyrobił przy pętli 100?? - co drugie średnio 50% wyskoczyły błędy (IMG:http://img-upload.pl/images/938_i.gif) - ale dane bez problemu się pobierają (IMG:http://img-upload.pl/images/170_l.gif) - swoją drogą coś jest nie tak bo i w przeglądarce jak za często i za szybko klikałem te przyciski to się wykolejało i potem nie zmieeee^^ - pozatym do zapytań ajax'owych mógłbyś dorzucić jakąś pamięć - pomysł na zabezpieczenie fajny (IMG:http://img-upload.pl/images/959_e.gif) - np to z liczbą znaków (IMG:http://img-upload.pl/images/959_e.gif)

w sumie to mógłbyś pobrać przez takie pseudo zabezpieczenie dopiero główniejszy skrypt co tym by się zajmował jakiś trudniejszy - no hoć jak się nagłówki sprawdzi to pod wszystko da się podszyć - ps. do czego jest to xmlhttp.setRequestHeader("Connection", "close");(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) - tzn podejrzewałem ale nagłówki były wysłąne w przeglądarce i tak:
Connection: keep-alive
Keep-Alive: 300


w każdym bądź razie jeśli logowałęś ilość zapytań z jednego ip to weisz że to nie zabezpieczenie dla kogoś kto coś trochu pisze - ale lepszy rydz jak nic (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) - swoją drogą już myślałem że jednak coś konkretnego jest z tym zabezpieczeniem bo jest weekend i dzisiaj też trochu chlupnąłem ale jak się okazało katalog dla skryptu nie miał praw zapisu i ja na fazie patrzałem gdzie literówkę zrobiłem (IMG:http://img-upload.pl/images/553_x.gif)

ale przyznaję, że dosyć ciekawy pomysł na zabezpieczenie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) - zapamiętam - moze trochu zmodyfikuję i pewnie wykożystam w przyszłości (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

oki - jest to przydługawe bo mi się teraz myśleć nie chciało to tylko funkcje kopiowałem i modyfikowałem ale jeśli miałbyś nie wierzyć [wiem - brzydki kod ale co chcesz od kogoś co jest na fazie - skopiowałem tylko fragment z kodu co po pijanemu analizowałem serwisz podbij (IMG:http://img-upload.pl/images/530_j.gif) )
Kod
<?php


// strona
function strona($url){
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$headers = array(    'Keep-Alive: 300',
            'Accept-Language: pl,en-us;q=0.7,en;q=0.3',
            'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
            
            
            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
            
            );
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-0.1 Firefox/3.0.5');


curl_setopt($ch, CURLOPT_HEADER, 0);
// gzip
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
// deflate
curl_setopt($ch, CURLOPT_ENCODING, 'deflate');
// gzip, deflate
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
$tresc=curl_exec($ch); if(curl_errno($ch)){echo 'Błąd #'.curl_errno($ch).': '.curl_error($ch);}
curl_close($ch);
return $tresc;
unset($tresc);
};



// reqID
function reqID($url){
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$headers = array(    'Host: snifferwebpage.awardspace.biz',
            'Keep-Alive: 300',
            'Accept-Language: pl,en-us;q=0.7,en;q=0.3',
            'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
            
            'POST /data.php HTTP/1.1',
            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Content-Type: application/x-www-form-urlencoded',
            'Content-Length: 9',
            'Keep-Alive: 300',
            'Cache-Control: no-cache',
            'Pragma: no-cache',
            'Connection: keep-alive'
            );
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-0.1 Firefox/3.0.5');
curl_setopt($ch, CURLOPT_POST, 1);//przesylamy metodą post
curl_setopt($ch, CURLOPT_POSTFIELDS, 'reqID=get'); //dane do wyslania
curl_setopt($ch, CURLOPT_REFERER, 'http://snifferwebpage.awardspace.biz/');
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);

curl_setopt($ch, CURLOPT_HEADER, 0);
// gzip
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
// deflate
curl_setopt($ch, CURLOPT_ENCODING, 'deflate');
// gzip, deflate
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
$tresc=curl_exec($ch); if(curl_errno($ch)){echo 'Błąd #'.curl_errno($ch).': '.curl_error($ch);}
curl_close($ch);
return $tresc;
unset($tresc);
};





// dane
function dane($ktore,$url){
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$headers = array(    'Host: snifferwebpage.awardspace.biz',
            'Keep-Alive: 300',
            'Accept-Language: pl,en-us;q=0.7,en;q=0.3',
            'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
            
            'POST /data.php HTTP/1.1',
            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Content-Type: application/x-www-form-urlencoded',
            'Keep-Alive: 300',
            'Cache-Control: no-cache',
            'Pragma: no-cache',
            'Connection: keep-alive',
            'Content-Length: 44'
            );
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-0.1 Firefox/3.0.5');
curl_setopt($ch, CURLOPT_POST, 1);//przesylamy metodą post
curl_setopt($ch, CURLOPT_POSTFIELDS, 'dane='.$ktore.'&sess='.reqID($url)); //dane do wyslania
curl_setopt($ch, CURLOPT_REFERER, 'http://snifferwebpage.awardspace.biz/');

curl_setopt($ch, CURLOPT_HEADER, 0);
// gzip
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
// deflate
curl_setopt($ch, CURLOPT_ENCODING, 'deflate');
// gzip, deflate
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
$tresc=curl_exec($ch); if(curl_errno($ch)){echo 'Błąd #'.curl_errno($ch).': '.curl_error($ch);}
curl_close($ch);
return $tresc;
unset($tresc);
};

strona('http://snifferwebpage.awardspace.biz/');
// echo '<pre>'.reqID('http://snifferwebpage.awardspace.biz/data.php').'</pre>';
for ($i=1;$i<7;++$i){$ktore=($i%2)+1;
echo $i.' : '.dane($ktore,'http://snifferwebpage.awardspace.biz/data.php').'<br/>';}

?>


ps. co niektórzy boty piszą też w js jako userscript i parametry do serwera swojego przekazują - a więc to co na stronie wtedy jest jak na talerzu podane (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) - tyle, że musi mieć przeglądarkę włączoną ^^

Ten post edytował zegarek84 7.06.2009, 22:02:41
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 16:04