<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-20433962</id><updated>2011-12-29T10:30:18.267-08:00</updated><title type='text'>index.php</title><subtitle type='html'>programare PHP</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20433962.post-114874111931039146</id><published>2006-05-27T07:43:00.000-07:00</published><updated>2006-05-27T07:45:19.313-07:00</updated><title type='text'>tipuri de autentificare</title><content type='html'>&lt;span style="font-style: italic;"&gt;Autentificare pe server&lt;/span&gt;&lt;br /&gt;Un browser Web stabileste o conexiune cu un server Web folosind TCP/IP. Apoi, browserul si serverul transfera date folosind HTTP. La nivel de server exista doua scheme native de autentificare Basic si Digest. Concret la accesul pe site in zona protejata, serverul Web raspunde cu o cerere 401 de autentificare, la care browserul clientului va deschide un formular cu nume utilizator si parola.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Autentificarea la nivel aplicatie &lt;/span&gt;&lt;br /&gt;Desi o autentificare Digest pe server cu utilizarea unei sesiuni criptate SSL poate parea o solutei buna, marea majoritate a organizatiilor aleg sa utilizeze pentru site-urile lor, o shema de autentificare proprie la nivelul aplicatie Web, din urmatoarele motive:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;necesitatea de a culege mai multe informatii privind clientii, inafara numelui si parolei&lt;/li&gt;   &lt;li&gt;posibilitatea de delogare nu doar prin inchiderea browserului&lt;/li&gt;   &lt;li&gt;pentru evitarea atacurilor prin forta bruta&lt;/li&gt;   &lt;li&gt;necesitatea integrarii intr-o arhitectura a site-ului cu diferite nivele de acces &lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114874111931039146?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114874111931039146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114874111931039146' title='29 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114874111931039146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114874111931039146'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/tipuri-de-autentificare.html' title='tipuri de autentificare'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114874086118751242</id><published>2006-05-27T07:33:00.000-07:00</published><updated>2006-05-27T07:41:01.186-07:00</updated><title type='text'>Pastrarea informatiilor in cookie</title><content type='html'>Atunci cand sunt asteptate informatii dintr-un cookie, pentru a avea siguranta ca aceste date nu au fost modificate, se poate folosi urmatoarea tehnica: trimiterea simultana a valorii combinate cu inca o valoare secreta, encodate md5, si compararea valorilor la primirea variabilelor.&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger/1117/2047/400/auth2.gif" /&gt;&lt;br /&gt;la primirea informatiilor se confrunta valorile&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger/1117/2047/400/auth3.gif" /&gt;&lt;br /&gt;aici informatia continuta in $valoare poate fi id-ul de sesiune, sau o combinatie de alte valori.&lt;br /&gt;Informatia $secret e utilizata la verificare dupa primirea cookie-ului, si poate fi pastrata fie intr-o baza de date pe server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114874086118751242?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114874086118751242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114874086118751242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114874086118751242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114874086118751242'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/pastrarea-informatiilor-in-cookie.html' title='Pastrarea informatiilor in cookie'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114874024279278558</id><published>2006-05-27T07:30:00.000-07:00</published><updated>2006-05-27T07:30:42.793-07:00</updated><title type='text'>masuri de protectie la inregistrare</title><content type='html'>Vorbind de autentificare, primul punct in care se cer masuri de protectie sunt formularele de inregistrare (login).&lt;br /&gt;Cateva din masurile de securitate care se impun, sunt:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;oprirea/blocarea accesului la formularul de inregistrare, dupa un numar de incercari esuate&lt;/li&gt;   &lt;li&gt;utilizarea de imagini in formulare (captcha) pentru evitarea accesului prin programe robot&lt;/li&gt;   &lt;li&gt;blocarea contului pentru o perioada de timp la un numar de incercari esuate de inregistrare &lt;/li&gt;   &lt;li&gt;jurnalizarea incercarilor de inregistrare soldate cu esec&lt;/li&gt;   &lt;li&gt;obligarea la alegerea de parole suficient de complexe&lt;/li&gt;   &lt;li&gt;informarea utilizatorilor privind aceste masuri.&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114874024279278558?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114874024279278558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114874024279278558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114874024279278558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114874024279278558'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/masuri-de-protectie-la-inregistrare.html' title='masuri de protectie la inregistrare'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114874018949605660</id><published>2006-05-27T07:29:00.000-07:00</published><updated>2006-05-27T07:29:49.563-07:00</updated><title type='text'>masuri de imbunatatire a securitatii</title><content type='html'>Desi nu sunt legate de PHP merita mentionate cateva masuri suplimentare de securitate:&lt;br /&gt;&lt;br /&gt;-utilizarea de conexiuni securizate cu SSL; acestea furnizeaza criptarea datelor, autentificarea serverului, integritatea mesajelor si (optional) autentificarea clientului pentru o conexiune TCP/IP.&lt;br /&gt;-separarea zonei de administrare si restrangerea accesului in zona respectiva lucru posibil si din aplicatie si la nivelul serverului web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114874018949605660?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114874018949605660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114874018949605660' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114874018949605660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114874018949605660'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/masuri-de-imbunatatire-securitatii.html' title='masuri de imbunatatire a securitatii'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114859376400906835</id><published>2006-05-25T14:49:00.000-07:00</published><updated>2006-05-25T14:49:24.010-07:00</updated><title type='text'>Protejarea informatiilor din baza de date</title><content type='html'>Internetul este un mediu nesigur si trebuie luata in calcul si posibilitatea ca un atacators sa treaca peste masurile de securitate si sa aiba acces la baza de date. Encriptarea informatiilor senzitive este o buna modalitate de a face fata unui astfel de atac. Datele cu continut senzitiv sunt encriptate inainte de a ajunge sa fie pastrate in tabele. Un exemplu este pastrarea parolelor. Dupa preluarea informatiei aceasta este encriptata folosind functia md5().&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114859376400906835?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114859376400906835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114859376400906835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114859376400906835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114859376400906835'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/protejarea-informatiilor-din-baza-de.html' title='Protejarea informatiilor din baza de date'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114859330629044929</id><published>2006-05-25T14:41:00.000-07:00</published><updated>2006-05-25T14:41:46.293-07:00</updated><title type='text'>Pastrarea informatiilor de acces</title><content type='html'>Conexiunea la baza de date se face prin specificarea host/username/password care in mod obisnuit e trecuta intr-un fisier unic. Acest fisier urmeaza sa fie inclus in fiecare pagina program care necesita conexiune. Exista o practica de a da extensia .inc unui fisier ce urmeaza sa fie inclus. Pericolul este acela ca acest fisier sa fie accesat direct via url, ori neavand extensia .php serverul il va trimite ca text, si prin urmare codul va aparea clar in browser fiind expuse si datele de conexiune la bc.&lt;br /&gt;O practica buna e aceea ca acest fisier sa fie plasat in structura de directoare intr-un loc inaccesibil (inafara structurii de directoare accesibile prin serverul web) sau sa ii fie data o extensie.php sau fiserele ce urmeaza a fi incluse sa fie marcate prin .inc.php.&lt;br /&gt;Aici trebuie mentionat si faptul ca serverul web poate fi setat sa interpreteze fisierele cu extensia .ini, sau o alta extensie.&lt;br /&gt;Este posibila scrierea informatiilor pentru accesul bd si in fisierul php.ini. Daca informatiile de conectare nu sunt gasite in alta parte, se apeleaza implicit cele scrise in acest fisier. E important de stiut ca oricine are acces pe server poate folosi functia ini_get() pentru a citi fisierul php.ini.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114859330629044929?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114859330629044929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114859330629044929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114859330629044929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114859330629044929'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/pastrarea-informatiilor-de-acces.html' title='Pastrarea informatiilor de acces'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114859322987120996</id><published>2006-05-25T14:40:00.000-07:00</published><updated>2006-05-25T14:40:29.873-07:00</updated><title type='text'>Filtrarea datelor de intrare</title><content type='html'>Prima modalitate de contracarare a injectiei SQL are un principiu simplu si anume acela de nu permite utilizatorului sa modifice sintaxa interogarii SQL. In acest scop informatiile primite de la utilizator trebuie filtrate/prelucrate.&lt;br /&gt;Pentru informatia de intrare de tip sir, acest lucru se realizeaza la fel ca si in cazul ghilimelelor magice prin functia addslashes() sau functii specifice ale bazei de date my_sql_real_escape_string (recomandat).&lt;br /&gt;Daca aplicatia asteapta un parametru valoare numerica pot fi folosite functiile is_numeric() pentru testare, sau poate fi schimbat tipul prin settype().&lt;br /&gt;La setul de caractere trebuie adaugate si caracterele folosite ca wildcard in interogarile SQL, atunci cand se utilizeaza clauza LIKE si anume '%' si '_'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114859322987120996?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114859322987120996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114859322987120996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114859322987120996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114859322987120996'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/filtrarea-datelor-de-intrare.html' title='Filtrarea datelor de intrare'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114859317147635468</id><published>2006-05-25T14:38:00.000-07:00</published><updated>2006-05-25T14:39:31.476-07:00</updated><title type='text'>Securitatea bazei de date</title><content type='html'>Securitatea bazei de date este un subiect vast ce urmareste urmatoarele aspecte:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;securitatea serverului&lt;/li&gt;   &lt;li&gt;filtrarea datelor de intrare&lt;/li&gt;   &lt;li&gt;pastrarea informatiilor de acces &lt;/li&gt;   &lt;li&gt;protejarea informatiilor din baza de date &lt;/li&gt; &lt;/ul&gt; Securitatea serverului are ca scop principal evitarea expunerii serverului de date. Atacurile exploateaza configurarile slabe.&lt;br /&gt;O aplicatie nesigura poate de asemenea sa fie folosita pentru a accesa serverul de date: fie prin lipsa validarii datelor de intrare ce urmeaza a fi folosite in interogari (injectie SQL), fie prin expunerea informatiilor din baza sau a informatiilor de acces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114859317147635468?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114859317147635468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114859317147635468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114859317147635468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114859317147635468'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/securitatea-bazei-de-date.html' title='Securitatea bazei de date'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114842123515434461</id><published>2006-05-23T14:52:00.000-07:00</published><updated>2006-05-23T14:53:55.156-07:00</updated><title type='text'>Register_globals off</title><content type='html'>Aplicatiile Web interactioneaza cu utilizatorii, primind informatii de la acesta sub diferite forme.&lt;br /&gt;&lt;br /&gt;Modalitatile prin care sunt transmise variabilele sunt ilustrate in figura de mai jos:&lt;br /&gt;&lt;br /&gt;Prin setarea in php.ini a directivei register-globals toate aceste variabile pot fi accesate direct prin nume, fara a conta cum anume au fost preluate. Aceasta modalitate de lucru a fost considerata un mare avantaj in PHP pentru usurinta lucrului.&lt;br /&gt;&lt;br /&gt;La variantele actuale de PHP (dupa 4.2.0) setarea by default este off. In acest fel variabilele sunt izolate dupa modul in care au fost create si poate fi determinta provenienta fiecareia.&lt;br /&gt;&lt;br /&gt;In manualul PHP se specifica: setata pe on, directiva register_globals va determina injectarea de variablile cu scop global la nivelul scritpului. Acest lucru impreuna cu faptul ca in PHP initializarea variabilelor nu este obligatorie, duce la scrierea de cod vulnerabil. A fost o decizie dificila, dar comunitatea PHP a decis dezactivarea acetei directive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114842123515434461?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114842123515434461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114842123515434461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114842123515434461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114842123515434461'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/registerglobals-off.html' title='Register_globals off'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114832655938838399</id><published>2006-05-22T12:34:00.001-07:00</published><updated>2006-05-22T12:38:58.070-07:00</updated><title type='text'>Oprirea accesarii automate a unui formular</title><content type='html'>Un formular este intotdeauna expus prin faptul ca accesarea acestuia poate fi facuta automat prin roboti. Cel mai adesea sunt vizate site-urile ce gazduiesc forumuri, bloguri cu scopul de a insera linkuri catre propriile site-uri, acest lucru avand efect in cresterea rankingului in motoarele de cautare.&lt;br /&gt;&lt;br /&gt;In scopul evitarii unor astfel de situatii, cele mai multe site-uri apeleaza la imagnile incluse in formulare (captcha images). Principiul consta in generarea unei imagini ce contine un sir de caractere aleatoare, care nu poate fi citit de roboti, controland in acest fel accesul prin formular. Imaginea este generata prin utilizarea librariei GD, literele sunt deformate si imaginea este prelucrata pentru a fi greu de citit.&lt;br /&gt;&lt;br /&gt;Odata cu generarea imaginii, sirul continut in imagine este encodat md5 si pastrat intr-o variabila de sesiune. Ulterior la primirea informatiilor prin formular, sirul introdus de utilizator este de asemenea encodat si comparat cu variabila pastrata pe server.&lt;br /&gt;&lt;br /&gt;Atunci cand atacul vizeaza un formular de login, ca masura de securitate suplimetara poate fi blocat accesul pe contul in cauza pentru un anumit timp fiind de asemenea foarte important ca abuzul sa fie inregistrat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114832655938838399?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114832655938838399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114832655938838399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114832655938838399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114832655938838399'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/oprirea-accesarii-automate-unui.html' title='Oprirea accesarii automate a unui formular'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114822145210863551</id><published>2006-05-21T07:14:00.000-07:00</published><updated>2006-05-21T07:24:12.120-07:00</updated><title type='text'>semnarea informatiilor ascunse din formulare</title><content type='html'>Atunci cand sunt asteptate informatii dintr-un cookie, sau dintr-un camp ascuns (input - hidden) al unui formular, pentru a avea siguranta ca aceste date nu au fost modificate, se poate folosi urmatoarea tehnica: trimiterea simultana a valorii combinate cu inca o valoare secreta, encodate md5, si compararea valorilor la primirea variabilelor.&lt;br /&gt;&lt;br /&gt;In  cazul unui formular:&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1117/2047/400/form_hash1.gif" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;si verificarea:&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1117/2047/400/form_hash2.gif" alt="" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114822145210863551?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114822145210863551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114822145210863551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114822145210863551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114822145210863551'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/semnarea-informatiilor-ascunse-din.html' title='semnarea informatiilor ascunse din formulare'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114821406366642766</id><published>2006-05-21T05:12:00.000-07:00</published><updated>2006-05-21T07:26:56.260-07:00</updated><title type='text'>Filtrarea informatiei</title><content type='html'>Anumite caractere prezente in informatia de intrare pot avea semnificatie ca formatare HTML si trebuie inlocuite cu echivalentul lor pentru a nu fi interpretate in browserul clientului. Vulnerabilitati cum ar fi XSS sau injectarea SQL, pot si trebuie oprite prin filtrarea informatiei. PHP pune la dispozitie doua functii in acest scop. Spre exemplu pentru encodarea informatiei ce urmeaza sa fie afisata pe ecran (forumuri, bloguri, mesaje) poate fi utilizata functia htmlentities(); aceasta converteste caracterele HTML in echivalentul, astfel incat in loc ca acestea sa fie interpretate de browser, ele sa apara in pagina HTML, impiedicand executia de cod javascript in browserul clientului.&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1117/2047/400/parse_encode1.gif" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Functia htmlentities() este identica cu htmlspecialchars() dar transforma toate caracterele HTML, pe cand htmlspecialchars() permite precizarea actiunii asupra ghilimelelor simple/duble.&lt;br /&gt;Actiunea f unctiei htmlentities():&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1117/2047/400/parse_encode2.gif" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Functia strip_tags nu inlocuieste codul HTML ci 'incearca' sa stearga tagurile. Pentru ca nu face nici un fel de validare a codului HTML e posibil sa apara efecte nedorite in cazul unor taguri incomplete, prin urmare nu este recomandata.&lt;br /&gt;Ghilimelele pun probleme atunci can sirul preluat urmeaza sa fie parte a unei interogari SQL. In acest caz e necesara anularea(escape) prin '\', lucru ce poate fi facut prin functii ale SGBD-ului sau din PHP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114821406366642766?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114821406366642766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114821406366642766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114821406366642766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114821406366642766'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/filtrarea-informatiei.html' title='Filtrarea informatiei'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114819603546273429</id><published>2006-05-21T00:10:00.000-07:00</published><updated>2006-05-21T00:20:35.463-07:00</updated><title type='text'>Expresii regulare</title><content type='html'>Validarea datelor de intrare presupune uneori restrictionarea dupa un tipar: spre exemplu pentru codul numeric personal care trebuie sa aiba un anumit numar de caractere, primul poate lua doar doua valori, urmatoarele 6 contin o data calendaristica.&lt;br /&gt;Pentru verificarea formatului informatiilor de intrare, PHP pune la dispozitie doua seturi de functii ce permit lucrul cu expresii regulare: ereg - ofera functionalitate de baza, in genul traditional al comenzii egrep din UNIX - si setul de functii preg- valabile cu instalarea librariei PCRE si care utilizeaza sintaxa Perl.&lt;br /&gt;&lt;br /&gt;exemple:&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1117/2047/320/expr_regular.gif" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Utilizarea expresiilor regulare ofera o modalitate comoda de scriere a codului, permitand inlocuirea mai multor linii cu o simpla functie, dar cere insa putin exercitiu si atentie.&lt;br /&gt;Nu exista un tipar unic pentru o restrictionare. Decizia pentru o expresie sau alta trebuie facuta cantarind intre exact si practic, pentru ca utilizarea acestora poate avea efecte in performanta programului.&lt;br /&gt;Exista si programe de asistenta in consturirea expresiilor, un exemplu consacrat fiind &lt;a href="http://www.regexbuddy.com/"&gt;RegexBuddy&lt;/a&gt;.&lt;br /&gt;Cum expresiile regulare sunt subiect de discutii nu doar in PHP, intrebarea logica este daca exista cumva expresii 'la cheie' spre exemplu pentru validarea unei adrese de email. Raspunsul este nu, nu exista, desi poate fi gasit pe internet un standard scris in 1982 - &lt;a href="http://www.ietf.org/rfc/rfc0822.txt"&gt;RFC 822&lt;/a&gt; - care accepta orice adresa valida, e inclus si in RegexBuddy si are mai bine de 6000 de caractere.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114819603546273429?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114819603546273429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114819603546273429' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114819603546273429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114819603546273429'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/expresii-regulare.html' title='Expresii regulare'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-114686257549604969</id><published>2006-05-05T13:52:00.001-07:00</published><updated>2006-05-05T14:52:05.123-07:00</updated><title type='text'>Utilizarea variabilei $PHP_SELF</title><content type='html'>Cand vorbim de formulare ne gandim in primul rand la transmiterea si validarea variabilelor. In exempul urmator nici macar nu e necesara transmiterea valorilor via formular ci pur si simplu afisarea acestuia.&lt;br /&gt;&lt;br /&gt;$PHP_SELF este o variabila predefinita ce are ca valoare numele scriptului curent cu tot cu calea sa pornind din root plus informatiile transmise odata cu acesta. Daca spre exemplu scriptul curent ce se executa este http ://xyz.com/dir/script.php, $_SERVER[‘$PHP_SELF’] returneaza /dir/script.php. Daca in plus mai avem si informatii in plus acestea vor fi si ele retinute http ://xyz.com/script.php/plus_info&lt;br /&gt;&lt;br /&gt;O practica obisnuita este aceea de a grupa in acelasi fisier mai multe module functionale - spre exemplu: prezentarea unui formular, validarea datelor preluate si procesarea informatiilor. In acest caz formularul face trimitere in acelasi fisier in care e definit. Din motive de portabilitate in acest caz informatiile sunt trimise via formular prin utilizarea variabilei $PHP_SELF:&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1117/2047/320/php_self1.1.gif" alt="" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Ce se intampla daca din browser schimbam adresa cu&lt;br /&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/1117/2047/320/php_self2.gif" border="0" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Rezultatul e ca la afisarea formularului este executat automat si codul javascript astfel fiind posibil un atac XSS.&lt;br /&gt;&lt;br /&gt;Prin urmare $PHP_SELF implica aceleasi riscuri ca orice alta variabila afisata in browser.&lt;br /&gt;&lt;br /&gt;Solutia este filtrarea prin htmlentities($_SERVER[‘PHP_SELF’]) sau utilizarea variabilei $_SERVER['SCRIPT_NAME'] ce pasteaza doar numele fisierului.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-114686257549604969?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/114686257549604969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=114686257549604969' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114686257549604969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/114686257549604969'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/05/utilizarea-variabilei-phpself.html' title='Utilizarea variabilei $PHP_SELF'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20433962.post-113978694574717715</id><published>2006-02-12T15:24:00.000-08:00</published><updated>2006-05-07T06:24:54.720-07:00</updated><title type='text'>PHP dog</title><content type='html'>&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;i&gt;From the PHP angle, in a way, Scotch affected a bunch of parts in PHP - since she was the only one I could consult with when I developed certain parts of the language, in the middle of the night many years ago... She was definitely a PHP dog.&lt;/i&gt;&lt;br /&gt;&lt;span align="right"&gt;&lt;a href="http://www.suraski.net/blog/index.php?/archives/6-Scotch-is-gone.html"&gt;&lt;br /&gt;&lt;i&gt;Zeev Suraski&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger/1117/2047/320/scotch.jpg" border="0" /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Si povestea continua: adaugati "?=PHPE9568F36-D428-11d2-A769-00AA001ACF42" in continuarea unei adrese URL ce indica o pagina php si ....&lt;br /&gt;in functie de versiunea php avem:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;a href="http://savoirprint.com/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42"&gt;http://savoirprint.com/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.zend.com/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42"&gt;http://www.zend.com/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42"&gt;http://www.php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://rubyonrails.com/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42"&gt;http://rubyonrails.com/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; schimbam si avem si ceva phpinfo()&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.php.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000"&gt;http://www.php.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;povestea toata o gasiti aici &lt;a href="http://www.0php.com/php_easter_egg.php"&gt;http://www.0php.com/php_easter_egg.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20433962-113978694574717715?l=indexdotphp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://indexdotphp.blogspot.com/feeds/113978694574717715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20433962&amp;postID=113978694574717715' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/113978694574717715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20433962/posts/default/113978694574717715'/><link rel='alternate' type='text/html' href='http://indexdotphp.blogspot.com/2006/02/php-dog.html' title='PHP dog'/><author><name>Lidia P.</name><uri>http://www.blogger.com/profile/07323786105627694163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
