Securitatea site-ului

Aici este locul unde puteti scrie despre orice probleme /intrebari, in limita bunului simt, care nu au legatura cu subiectele din celelalte forumuri, sau cu materialele de pe site.
cadou
Mesaje: 328

Securitatea site-ului

Inca sunt in lucru cu site-ul meu si ma tot gandesc mereu, oare am facut bine pagina asta ? Oare se poate cumva sa patrunda cineva si sa faca "rau" pe aceasta pagina ?

Am incercat ca la fisierele ce le actionez dintr-un form prin ajax sa le fac oarecum o protectie si anume:

Cod: Selectaţi tot

function delete_articol(did){
  $.ajax({
		url: '/discutii/delete.php',
		type:'POST',
		data:'did='+did ,
		success:function(m){
		if(m == 'yes'){
      $('#discutie'+ did).slideUp();
	  }
	  else
	  {
	  	var msg = new popWindow({
			messageHeader : '<font color="red">Eroare',
			messageContent: m+'</font>'	
			});
		msg.open();
	  }
    }
  });
}
Aici este un exemplu de un cod care doresc sa explic ceea ce am vrut sa zic prin "protectie". Daca cineva doreste sa acceseze din adress bar direct adresa ....ro/discutii/delete.php sa nu i se permita sa vada pagina ...
Prin intermediul formularelor, input-urilor, textarea sa se introduca vre-un cod de orice natura ce poate cauza diverse neplaceri in functionarea site-ului, stergere diverse fisiere din site sau din baza de date .... ????
La ce alte aspecte ar trebui sa mai am grija in constructia site-ului ?

P.S in timp ce construiesc site-uri, am conditii ca eu ca si admin sa am acces la diverse (exemplu: sa sterg/editezorice articol, postat de oricine de pe site)

MarPlo Mesaje: 4343
Salut
O pagina php poate fi accesata si din exterior prin cUrl, si se pot transmite date prin POST cu cUrl.
- Securitatea se face pe codul script-ului.

1. Seteaza o sesiune pt. admin si sa se efectueze acele instructiuni doar daca acea sesiune e valida.
2. Filtreaza datele primite prin POST/GET pe campurile de formular respective.
- De exemplu: campurile pt. nume de fisiere, email, titlu sa nu contina tag-uri html (cu strip_tags() ).
3. Pentru operatiuni cu baza de date (in special Insert /Update /Delete) foloseste Prepare-Execute cu $sql cu inlocuitori.

- Subiectul e deschis si pentru alte recomandari sau corectari de la cei cu experienta.

cadou Mesaje: 328
Multumesc pentru raspuns!
Acum revin ca sa detaliez putin primul punct de pe lista.

Eu ca si conditie pentru actiunile mele de admin, as avea asa:

Cod: Selectaţi tot

if($_SESSION['nume'] == $numeadminsite) {  // ceea ce vreau pentru admin  }
Inca sunt la inceput, iar unele lucruri mi se par a fi spune in chineza, inca mai am muuuult de invatat.
Cum as putea seta o sesiune pt admin ?
Daca las asa cum am facut cu conditia de mai sus are ceva ?
Detalii, daca se poate

Multumesc anticipat!

P.S -> cam asta ar fi site-ul meu :D www.cobadin.ro , (daca deranjeaza link-ul, editeaza comentariul acesta, stergand acest link) , multumesc :)

cotos93 Mesaje: 4
tocmai am intrat pe site-ul tau ! si poate fi hack-uit usor ! te poti loga cu user + parola formata din: 1' or '1'='1

cadou Mesaje: 328
Si ce sfaturi imi dai pentru a proteja site-ul ?

Inca stau si ma gandesc cum as putea securiza site-ul pentru a nu fi accesat rau intentionat ...

cotos93 Mesaje: 4
foloseste PDO la conexiune ! eventual nu folosi direct $_POST['pass'] in query , incearca cu
$parola = htmlspecialchars($_POST['pass']);

la username foloseste aceias chestie !

cadou Mesaje: 328
folosesc PDO,
inca sunt la inceput de drum, mai am de lucru, cunostintele mele sunt de incepator.
am facut ce mi-ai zis.

Daca ai avea timp si ai vrea, poti sa mai incerci sa vezi ce "bube" mai am la securtitate ?

Iti multumesc anticipat

MarPlo Mesaje: 4343
Ca sa eviti conectarea prin instructiuni transmise in datele de conectare, filtreaza acele date sa contina doar caractere sigure, fara tag-uri, backslash sau ghilimele.
De exemplu:

Cod: Selectaţi tot

function filterStr($str){
  $str = strip_tags($str);
  $str = str_ireplace(['"', "'", '\\'], '', $str);
  return trim($str);
}

$name = isset($_POST['name']) ? filterStr($_POST['name']) :'';
$password = isset($_POST['password']) ? filterStr($_POST['password']) :'';

misat Mesaje: 22
Pe PDO este metoda quote, cu care poti ecrana caractere "nedorite" in cereri.
http://php.net/manual/en/pdo.quote.php

cotos93 Mesaje: 4
Mai ai o problema, daca dai pe conectare si acolo la conectare dai sa recuperezi parola ! Dupa aceea sa dai iar conectare nu mai merge iti apare in continu chestia cu recuperare parola !

cadou Mesaje: 328
Cred ca am rezolvat problema. Sper ca am inteles din explicatiile tale ce trebuie sa modific.
Multumesc!

Subiecte similare