Securitate site din exterior (cURL)

cadou
Mesaje: 284

Securitate site din exterior (cURL)

Pentru a evita ca cineva sa trimita date nedorite din exteriorul site-ului, m-am gandit sa fac urmatorul lucru:

Cod: Selectaţi tot

if(isset($_SERVER['HTTP_REFERER'])) { $adresa = $_SERVER['HTTP_REFERER'];} // daca vine de undeva cererea de adaugare in baza de date // if(isset($adresa)) { // definesc ce adrese accept // $acc = array("$link/bancuri.php", "$adresasite/bancuri.php"); // daca vine de unde trebuie sa vedem daca este de unde vreau eu sa vina cererea // if($adresa == in_array($adresa, $acc)) { echo "da ai voie sa adaugi in baza de date"; } // cererea NU vine de unde trebuie else { echo "nu ai voie sa adaugi in baza de date"; } } // daca nu are referinta // else { echo "adresa a fost accesata simplu din adress bar"; }
1. nu stiu daca asta ma fereste de accesare fara autorizatie din exterior cu cURL
2. Nu am idee cum as putea sa adaug in array urmatorul lucru:
am si adresa de genul $numesite/bancuri-x , unde x este doar un numar ( bancuri-10 ) adica pagina 10 cu bancuri
3. Acelasi lucru as dori sa il fac si pentru adresa de genul: $numesite/bancuri/autor/XXX , unde XXX reprezinta un nume de utilizator inscris pe site. cum as putea sa il bag in array ?
4. Tot pentru punctul 3, $numesite/bancuri/autor/XXX/X , unde XXX reprezinta un nume din baza de date si X reprezinta un numar intreg, adica pagina 10 de bancuri adaugate de autorul Admin .

Ceva explicatii, solutii, daca exista ?

Multumesc anticipat!

MarPlo
Din ce stiu pot sa spun ca unele browsere nu trimit date de HTTP_REFERER la server. Iar prin cUrl pot fi transmise date pentru HTTP_REFERER:

Cod: Selectaţi tot

curl_setopt($ch, CURLOPT_REFERER, 'http://example.com/1');
- Deci nu e de baza si util sa folosesti HTTP_REFERER.

Mai mult, nu am experienta legat de securitate site ca sa dau indicatii /solutii in acest domeniu; poate altcineva.
- Oricum, poate nici nu e nevoie de astfel de masuri complexe.

misat
Intr-adevar undele browserer nu transmit HTTP_REFERER, asa ca in anumite situatii ai putea sa ai probleme.

Da, prin cURL (precum si alte instrumente) se poate de transmis HTTP_REFERER, asa ca aceasta idee nu cred ca e cea mai buna (de fapt nu stiu motivul exact pentru care vrei sa faci asa restrictii).
O solutie ar fi ca in momentul cind creezi forma pe client, sa generezi si o cheie care ai putea sa o validezi pe server. Astfel cind clientul transmite datele se transmite si cheia, iar daca aceasta lipseste sau "nu este cunoscuta" nu permiti adaugarea datelor. Desigur date pentru adaugare e bine sa le transmiti prin POST (sau PUT).

Daca totusi o sa decizi sa rezolvi utilizind validarea HTTP_REFERER:
daca ai un string in care o parte este "variabila" (sau mai multe parti), pentru a compara cu alt string poti utiliza expresii regulare si asa functii ca preg_match din PHP, sau alte functii de acest gen.

cadou
Toate datele sunt trimite prin post.
Azi cineva a putut sa se logheze pe site fara a avea cont, cum a facut si cum as putea sa ma protejez de asta, habar nu am ....

Subiecte similare