Securizare Link
Last Updated: Jan 28 2012 23:21, Started by
czo1990
, Dec 19 2011 15:31
·
0
#1
Posted 19 December 2011 - 15:31
Salut! Sunt incepator intr-ale PHP uli ( mai exact de aseara lucrez cu el ) si am dat peste prima problema majora.
Vreau sa fac un site care permite accesul la panoul de comanda doar printr-o autentificare.Bun.Am facut baza de date, am facut forma de atutenficare , iar in momentul cand introduc user si parola corecte ma trimite pe pagina panoului de comanda ( ex: site/comanda.php ).Exact ce vroiam! Problema apare aici pentru ca daca tastez in browser direct adresa panoului de comana pot sari lejer peste partea e logare ceea ce e dezastruos... Deci ce as putea face in cazul asta, de ce anume am nevoie si ce ar mai trebui implementat? Multumesc anticipat! |
#3
Posted 19 December 2011 - 15:47
Ai nevoie de sesiuni.
Fiecare utilizator are asociata o sesiune. (vezi http://www.php.net/m...ok.session.php) In momentul in care utilizatorul introduce user/parola corecte setezi o variabila in sesiune ($_SESSION['acces_la_pagina_restrictionata'] = 'da'. Nu afisezi pagina cu acces restrictionat decat daca $_SESSION['acces_la_pagina_restrictionata'] === 'da'; Daca utilizatorul nu are acces (} else {) probabil vrei sa redirectezi utilizatorul la alta pagina: header('Location: /index.php'); Posibile probleme: - nu intelegi cum functioneaza sesiunile; - algoritmul de verificare a parolei nu e corect; - SQL injection. |
#4
Posted 20 December 2011 - 18:59
Dupa cum a zis si sergiu_spooky, aici lucrezi cu sesiuni, adica,
Atunci cand dai submit la forma, acolo unde testezi daca valorile introduse sunt corecte, daca sunt corect pornesti o sesiune si ii atribui o valoare. $_SESSION['logat'] = true;apoi pe pagina de panou la inceput verifici daca nu este logat il redirectionezi pe pagina care vrei tu. (Ca sa nu dea erori, eu unu folosesc si isset sa verific daca este setata acea sesiune). if (!isset($_SESSION['logat']) && $_SESSION['logat'] != true) { header('Location: ./'); exit; } Trebuie sa pui session_start(); la inceput ca sa pornesti sesiunea altfel o sa iti dea erori. Daca ai alte probleme nu ezita sa intrebi. |
#5
Posted 23 January 2012 - 10:48
Se poate ascunde numele scriptului procesat din adresa? adica in loc de www.site.com/index.php sa afiseze altceva ?
Cat de safe este sa pun in arrayul $_SESSION chestii de care am nevoie in query MYSQL? De exemplu sa setez $_SESSION['name_client'] etc... Exista aplicatii care sa recupereze de pe server arrayul $_SESSION ? |
#6
Posted 23 January 2012 - 11:14
Poti folosi POST in loc de GET. Da' nu asta-i solutia. Ci HTTPS.
Edited by neagu_laurentiu, 23 January 2012 - 11:14. |
#7
Posted 25 January 2012 - 01:55
opo, on 23rd January 2012, 10:48, said: Se poate ascunde numele scriptului procesat din adresa? adica in loc de www.site.com/index.php sa afiseze altceva ? Sa-ti afiseze ce in loc de www.site.com/index.php? Daca vrei sa faci SEO atunci citeste despre URL rewriting; opo, on 23rd January 2012, 10:48, said: Cat de safe este sa pun in arrayul $_SESSION chestii de care am nevoie in query MYSQL? De exemplu sa setez $_SESSION['name_client'] etc... Exista aplicatii care sa recupereze de pe server arrayul $_SESSION ? Cat se poate de safe, doar scriptul tau avand access la $_SESSION. |
#8
Posted 25 January 2012 - 02:20
Tot cautand pe net despre securitate ( nu am link din pacate) un developer scria ca daca serverul nu e configurat bine exista posibilitatea de a citi fisierul php neinterpretat.
Multumesc de raspuns. |
#9
Posted 25 January 2012 - 16:00
Pai daca serverul iti executa script PHP atunci nu are cum sa-ti vada codul tau PHP, doar daca il scrii fara <?php ?> atunci il trimite ca text fara sa il parseze.
|
#10
Posted 25 January 2012 - 19:02
opo, on 25th January 2012, 02:20, said: Tot cautand pe net despre securitate ( nu am link din pacate) un developer scria ca daca serverul nu e configurat bine exista posibilitatea de a citi fisierul php neinterpretat. Multumesc de raspuns. E o situatie care apare din cauza unei proaste configurari a sistemului nu ca urmare a unei utilizari normale. |
|
#11
Posted 25 January 2012 - 19:22
yoshumi, on 20th December 2011, 17:59, said: if (!isset($_SESSION['logat']) && $_SESSION['logat'] != true) { header('Location: ./'); exit; } Nu ar fi mai bine asa? if (!isset($_SESSION['logat']) || $_SESSION['logat'] !== true) { header('Location: ./'); exit; } |
#12
Posted 25 January 2012 - 19:58
if (!isset($_SESSION['logat'])) { header('Location: ./'); exit; } Defapt aici merge si asa, ca nu ai cum sa verifici tu daca nu este pus, nu exista. |
#13
Posted 26 January 2012 - 00:10
De mers merge, eu am postat strict legat de codul ala.
Conditia ta nu era pusa bine pentru ca $_SESSION['logat'] poate fi setat dar nu true (NULL, false, e suficient sa gresesti o data in o functie/metoda si sa se intample) si atunci redirectul tau nu se mai executa. Si daca mai scrii si alte if-uri in stilul asta ai sa te trezesti cu niste bug-uri cat casa poporului si nu ai sa stii de unde. De asemenea, tu ai folosit != (not equal), eu am folosit !== (not identical). Cu == si != te poti pacali in anumite cazuri, vezi codul urmator: var_dump(0 == "a"); // 0 == 0 -> true var_dump(0 === "a"); // 0 == a -> false |
#14
Posted 26 January 2012 - 06:02
Stiu ca === strict-ul verifica si daca sunt de acelasi tip.
|
#15
Posted 27 January 2012 - 11:13
Tot legat de securitate, cum trebuiesc setate drepturile daca am :
index.php -- care vreau sa fie accesibil config.php -- read only si inaccesibil ./bkp ( folder ) accesibil doar de catre php nu si de catre apache ./upload accesibil de catre apache drept citire si scriere |
|
#16
Posted 27 January 2012 - 19:42
opo, on 27th January 2012, 12:13, said: Tot legat de securitate, cum trebuiesc setate drepturile daca am : index.php -- care vreau sa fie accesibil config.php -- read only si inaccesibil ./bkp ( folder ) accesibil doar de catre php nu si de catre apache ./upload accesibil de catre apache drept citire si scriere |
#17
Posted 28 January 2012 - 02:07
Exact cum a spus si original, pui doar index.php in root si restul in spatele lui.
Asa nu o sa ai acces direct la ele. |
#18
Posted 28 January 2012 - 23:21
Daca eu ca root creez un folder in public_html si fac chmod 700 pe el din cate vad eu nu mai este accesibil, la fel si cu fisierele. Daca le pun in alta parte si fac trimitere catre ele vad doua posibilitati :
1- le executa apache, caz in care folderul respectiv trebuie sa aiba setate permisiunea de lasa apache sa le citeasca 2- le executa root la un interval de timp x caz in care ar trebui sa folosesc cron insa in acest fel daca nu e bine gandit intervalul de timp aplicatia isi pierde din valoare. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users