 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
Birkoff
Data înscrierii: 18/Mar/2004
Mesaje: 2210
Locație: Bucuresti
|
| Trimis: Mar Apr 04, 2006 11:13 am Titlul subiectului: Metode de securizare site |
|
|
Stiu ca au mai fost discutii pe tema asta aici, dar ma gandeam ca e o discutiie din care mereu se afla ceva nou asa ca o redeschid.
Voi cum va securizati site-ul? Ma refer atat la trimiterea datelor din formulare cat si la introducerea datelor in baza de date sau afisarea paginilor cu continut restrictionat doar pentru anumiti user...
Eu ma gandeam asa:
1. Site-ul e construit pe nivele de acces, nivelul cel mai de jos il are vizitatorul care poate vedea anumite pagini dar nu poate introduce nimic in baza de date.
2. La formulare, daca nu trebuie ca vizitatorul sa fie logat (gen formular de contact sau pool) verific urmatoarele:
a) datele trimise prin formular sa vina de pe acelasi domeniu cu pagina formularului (pentru a se evita preluarea datelor de pe alte domenii, trimise de roboti sau persoane cu chef de "joaca")
b) la fiecare trimitere salvez in bd ip (eventual creez un cooke) si daca de la acelasi ip au mai fost trimise datele in ultimele x secunde refuz prelucrarea lor (pentru a se evita flood-ul, trimiterea la infinit a acelorasi date)
c) masura de protectie suplimentara, generez la fiecare trimitere un nr aleator pe care il salvez intr-o variabila de sesiune, si acelasi nr il trimit prin get sau post impreuna cu datele din formular, la preluarea datelor verific daca nr trimis corespunde cu cel din sesiune - daca corespunde datele sunt ok, daca nu corespunde, e tentativa de hack si ignor datele)
3. la introducerile in baza de date, verific daca userul are drept de a introduce datele, verific daca datele sunt ok (strip slash, trim, escapestring etc...) verific daca nu au mai fost deja introduse pe ziua de azi... apoi daca au fost introduse ok fac o redirectare si ii zic ca au fost introduse cu succes
4. la afisarea paginilor cu continut restrictionat, ma bazes in special pe sesiuni, fiecare user ii acord un nr care corespune setarilor de grup sau celor individuale si in functie de acest nr, are acces la anumite pagini sau nu...
(in genul grupurilor din phpbb)
5. la sesiuni, verific ca id-ul sesiuni sa fie acelasi si sa corespunda cu ip-ul si userul curent, desi cred ca ar mai trebui facute si alte verificari la sesiuni, am auzit ca browserul AOl cam da peste cap sesiunile...
6. la formularele de login, pentru a evita programele bruteforce, pun si o poza cu un cod generat aleator, si nu permit mai mult de x incercari de logare nereusite de la acelasi ip...
Alte idei? |
|
| Sus |
|
raul_
Data înscrierii: 15/Sep/2005
Mesaje: 711
|
| Trimis: Mar Apr 04, 2006 11:23 am Titlul subiectului: |
|
|
| Punctul 5 mi se pare mie sau verificarea ta va fi mereu o comparatie de genul if(true==true) ??? |
|
| Sus |
|
Birkoff
Data înscrierii: 18/Mar/2004
Mesaje: 2210
Locație: Bucuresti
|
| Trimis: Mar Apr 04, 2006 11:28 am Titlul subiectului: |
|
|
raul_ a scris: Punctul 5 mi se pare mie sau verificarea ta va fi mereu o comparatie de genul if(true==true) ???
salvezi id-ul sesiunii intr-o variabila de sesiune (la logare sau la intrarea pe pagina a vizitatorului prima data) apoi in celelalte pagini compar id-ul cu valoarea din variabila de sesiune |
|
| Sus |
|
raul_
Data înscrierii: 15/Sep/2005
Mesaje: 711
|
| Trimis: Mar Apr 04, 2006 11:31 am Titlul subiectului: |
|
|
Birkoff a scris: raul_ a scris: Punctul 5 mi se pare mie sau verificarea ta va fi mereu o comparatie de genul if(true==true) ???
salvezi id-ul sesiunii intr-o variabila de sesiune (la logare sau la intrarea pe pagina a vizitatorului prima data) apoi in celelalte pagini compar id-ul cu valoarea din variabila de sesiune
Da....acum am inteles ce vrei sa spui.... |
|
| Sus |
|
black diamond
Data înscrierii: 23/Mai/2005
Mesaje: 298
|
| Trimis: Mar Apr 04, 2006 11:58 am Titlul subiectului: |
|
|
<?php
public function strChk($key,$val,$where) {
$codechars='[.]{0,500}';
if ( preg_match('~'.$codechars.'[;]{0,1}'.$codechars.'OR'.$codechars.'='.$codechars.'[#]{0,10}~',$val) == 1 ) {
$this->addErr('Detected sql injection exploit in '.$where.'.');
}
if ( preg_match('~'.$codechars.'<script>'.$codechars.'</script>'.$codechars.'~',$val) >= 1 ) {
$this->addErr('Detected remote scripting exploit in '.$where.'.');
}
}
?>
La ceva de genul asta ma gandesc eu de cateva zile, am un obiect $security in framework care face o verificare sumara a datelor [incerc sa fac o lista de metode uzuale de exploit]. Fiecare pagina->post isi face apoi validarea proprie pentru formulare/etc. Eu nu permit decat url-uri de genul ceva/altceva/script_php_fara_extensie si POST-uri. Get e prea 'vizibil'. |
|
| Sus |
|
kul
Data înscrierii: 09/Dec/2005
Mesaje: 306
Locație: cta
|
| Trimis: Mar Apr 04, 2006 1:58 pm Titlul subiectului: |
|
|
| bd, era un proiect pe tema asta owasp. doar ce am apucat sa desfac arhiva. ce-mi place ca are mai multe nivele de sanitizare: paranoid, normal, light, etc. inca o data, n-am apucat sa-l studiez pe indelete. am mai luat si alta data niste clase de pe phpclasses si n-am fost multumit de ele. |
|
| Sus |
|
black diamond
Data înscrierii: 23/Mai/2005
Mesaje: 298
|
| Trimis: Mar Apr 04, 2006 2:34 pm Titlul subiectului: |
|
|
| Da, o sa il studiez (il am pe hdd de cateva zile - tot cineva de pe forum mi-a spus de el) , dar mai intai vreau sa vad ce pot sa fac eu, si apoi compar cu ce/cum fac ei. Daca ei folosesc un mod 'corect' cu ocazia asta vad ce gresesc eu. Poate dureaza mai mult, dar invat mai repede asa. |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|