Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cumparare AC Gree [Buget maxim 30...

Ce e aratarea asta ?

Probleme timonerie schimbator sau...

Numar strada gresit in contractul...
 Centrala Ariston Cares Premium 24...

La multi ani @Klasse!

La multi ani @shmecherul!

pareri ipad 6-2018- flip
 Cum au aparut supermarketurile in...

Campanii mincinoase Carrefour

Tv toshiba defect

touchscreen navigatie stricat
 bonsai - de unde?

Resetare Bonus Malus

Unitatea optica DVD-rw absenta pe...

Problema configurare Wireguard
 

Securizare Link

- - - - -
  • Please log in to reply
17 replies to this topic

#1
czo1990

czo1990

    Junior Member

  • Grup: Members
  • Posts: 42
  • Înscris: 07.08.2010
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!

#2
LensFlare

LensFlare

    Tin Foil Mask Society

  • Grup: Senior Members
  • Posts: 14,769
  • Înscris: 09.05.2005
cookies

#3
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
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
yoshumi

yoshumi

    Junior Member

  • Grup: Members
  • Posts: 151
  • Înscris: 27.02.2009
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
opo

opo

    Senior Member

  • Grup: Senior Members
  • Posts: 2,591
  • Înscris: 24.08.2006
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
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,631
  • Înscris: 30.07.2003
Poti folosi POST in loc de GET. Da' nu asta-i solutia. Ci HTTPS.

Edited by neagu_laurentiu, 23 January 2012 - 11:14.


#7
urban

urban

    Active Member

  • Grup: Members
  • Posts: 1,622
  • Înscris: 25.07.2002

View Postopo, 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;

View Postopo, 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
opo

opo

    Senior Member

  • Grup: Senior Members
  • Posts: 2,591
  • Înscris: 24.08.2006
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
yoshumi

yoshumi

    Junior Member

  • Grup: Members
  • Posts: 151
  • Înscris: 27.02.2009
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
urban

urban

    Active Member

  • Grup: Members
  • Posts: 1,622
  • Înscris: 25.07.2002

View Postopo, 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
ecstrim

ecstrim

    Active Member

  • Grup: Members
  • Posts: 1,471
  • Înscris: 18.10.2002

View Postyoshumi, on 20th December 2011, 17:59, said:

if (!isset($_SESSION['logat']) && $_SESSION['logat'] != true) {
  header('Location: ./');
  exit;
}
Poate ca in loc de && (and) voiai sa scrii || (or).


Nu ar fi mai bine asa?
if (!isset($_SESSION['logat']) || $_SESSION['logat'] !== true) {
  header('Location: ./');
  exit;
}


#12
yoshumi

yoshumi

    Junior Member

  • Grup: Members
  • Posts: 151
  • Înscris: 27.02.2009
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
ecstrim

ecstrim

    Active Member

  • Grup: Members
  • Posts: 1,471
  • Înscris: 18.10.2002
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
yoshumi

yoshumi

    Junior Member

  • Grup: Members
  • Posts: 151
  • Înscris: 27.02.2009
Stiu ca === strict-ul verifica si daca sunt de acelasi tip.

#15
opo

opo

    Senior Member

  • Grup: Senior Members
  • Posts: 2,591
  • Înscris: 24.08.2006
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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postopo, 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
Pui doar index.php în public_html, restul fișierelor în afara lui. Astfel acestea nu pot fi deservite de apache direct, ci trebuie să o faci programatic, cu php, după cum dorești (pentru că programând sistemul, deții controlul, deci poți lua decizii).

#17
yoshumi

yoshumi

    Junior Member

  • Grup: Members
  • Posts: 151
  • Înscris: 27.02.2009
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
opo

opo

    Senior Member

  • Grup: Senior Members
  • Posts: 2,591
  • Înscris: 24.08.2006
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate