Encriptarea comunicatiei intre servere cu PHP - Securitatea Informatica

Encriptarea comunicatiei intre servere cu PHP

Abilitatea de a comunica intre servere si site-uri web este extrem de utila in multe situatii. Cateva exemple de situatii sunt:

  • Mentinerea centralizata a unei liste de linkuri pentru toate site-urile
  • Mentinerea centralizata a unei liste pentru anunturile afiliate
  • Permiterea ca datele sa fie partajate intre site-uri
  • Permiterea ca datele sa fie controlate si/sau sterse de pe alt server – acest lucru este util pentru acordarea de licente.
  • Servere de criptare, cand cheile sunt tinute pe un site central si script-urile client utiliza acest server pentru a cripta mesajele, fara a sti direct cheile.

Acestea sunt doar cateva din utilizarile din prezentul cod de comunicare. Iată o mostra:

Codul de comunicare inter-server pentru clienti

Aceasta functie cere un fisier de la alt server.

$filecontents=get_info("sitelinks.txt","http://www.mysite.com/transfer.php");

function get_info($filename,$masterurl){
$masterurl=$masterurl."?fname=$filename";
$transportkey='thekey';
$td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
mcrypt_generic_init($td, $transportkey, 01234567);
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,$masterurl);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1) ;
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
$plaintext=urldecode(base64_decode(mdecrypt_generic ($td,$buffer)));
return ($plaintext);
}

Aceasta functie trimite un fisier catre un server care l-a solicitant.

$filename=$_GET['fname'];
$iplist="~77.99.138.28~101.67.132.27~106.29.118.16~"; #lista de ip-uri acceptate
if (! send_info("sitelinks.txt","http://www.mysite.com/transfer.php")){;
	echo "Bad Request";
}

function send_info($filename,$iplist){
$transportkey='thekey';
$ip=$_SERVER['REMOTE_ADDR'];
if (!(file_exists($filename))){
	sleep(5);
	return false;
}
if (!(strpos("XX$iplist","~$ip~")){
	sleep(20);
	return false;
}
$plaintext=urlencode(file($filename));
$td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
mcrypt_generic_init($td, $transportkey, 01234567);
$encoded = mcrypt_generic ($td, $plaintext);
$d2send=base64_encode($encoded);
echo($d2send);
return true;
}

Este important sa se verifice site-urile solicitante pentru a va asigura ca sunt in regula. Verificarea IP este o modalitate buna de a face acest lucru deoarece este dificil (nu imposibil) de falsificat. Aceste rutine PHP sunt destul de sigure, deoarece oricine incearca sa sparga fisiere de pe site-ul dumnevoastra trebuie sa stie un IP permis si, de asemenea, cheia de transport. Pentru a evita un atac automat programul aşteapta cateva secunde inainte de a muri daca informatiile trimise sunt gresite.

Twitter Digg Delicious Stumbleupon Technorati Facebook


Nici un comentariu inca... Fii primul care lasa un comentariu!

Lasa un raspuns

This site is protected by Comment SPAM Wiper. This site is protected by WP-CopyRightPro