Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc oko sesija i redirekcije

[es] :: PHP :: Pomoc oko sesija i redirekcije

[ Pregleda: 2024 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Thugzsr
Milos Maric
student
Novi Sad

Član broj: 229631
Poruke: 103
*.static.kdsinter.net.



+1 Profil

icon Pomoc oko sesija i redirekcije02.06.2011. u 19:21 - pre 157 meseci
na predlog VladeSu otvoricu novu temu zbog drugih korisnika kojima mozda bude nekad ovo zatrebalo!
problem je u redirekciji, tj zabrani pristupa na strane ako korisnik nije ulogovan.
ja sam uradio jedan deo koda, i ne znam kako da uradim drugi deo!
Code:

session_start();
require_once 'config.php';
if (isset($_POST['userid']) && isset($_POST['password']))
{
  // ako korisnik pokusava da se uloguje
  $userid = $_POST['userid'];
  $password = $_POST['password'];
  $query = 'select * from admin '
           ."where username='$userid' "
           ." and pass=sha1('$password')";

    {
        $_SESSION['valid_user']=$userid;
    }
}

i sad mi treba else koji ako nije ulogovan korisnik prosledice ga na login stranu. nadam se da razumete sta hteo da pitam! :D
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Pomoc oko sesija i redirekcije03.06.2011. u 00:08 - pre 157 meseci
Za redirekciju koristi header("location: login.php"); gde je login.php tvoja strana za prijavu.

Koristi
Code:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//Provera unosa forme
//Ako je validna definiši sesiju valid_user
//U suprotnom "unset"-uj je (i proizvoljno rekreiraj session_id() )
}
else {
//Provera valid_user sesije - da li je korisnik već ulogovan 
//Ako sesija i podaci nisu validni redirektuj sa header funkcijom na login.php stranu (stavi i die; ili exit; na kraju)
}


[Ovu poruku je menjao ivan.a dana 03.06.2011. u 01:21 GMT+1]
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

nesh
Đorđević Nebojša
Younify - Magento (PHP) development
Niš

Član broj: 668
Poruke: 127
*.dynamic.isp.telekom.rs.

Sajt: nesh-microblog.blogspot.c..


+2 Profil

icon Re: Pomoc oko sesija i redirekcije07.06.2011. u 07:38 - pre 156 meseci
Citat:
Thugzsr
Code:

  $userid = $_POST['userid'];
  $password = $_POST['password'];
  $query = 'select * from admin '
           ."where username='$userid' "
           ." and pass=sha1('$password')";


SQL injection! Ako nista drugo onda barem nesto kao:

Code:

  $userid = addslashes($_POST['userid']);
  $password = addslashes($_POST['password']);
  $query = 'select * from admin '
           ."where username='$userid' "
           ." and pass=sha1('$password')";


nikad ne verovati nicemu sto dolazi 'sa strane'
Nebojša Đorđević - nesh
http://younify.nl
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1571 Profil

icon Re: Pomoc oko sesija i redirekcije07.06.2011. u 08:29 - pre 156 meseci
Ja više volim da prvo izvučem slog iz baze po korisničkom imenu a da zatim proverim da li je lozinka u tom slogu ista kao i ona unesena u login formi.

Najpre, tako je mnogo bezbednije, a zatim, po pravilu se uvek nešto makar loguje vezano za korisnika, pa makar i info da je neuspešan login, pa je dobro imati tekuće podatke o korisniku iako se nije ulogovao.
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Pomoc oko sesija i redirekcije07.06.2011. u 10:37 - pre 156 meseci
Citat:
Predrag Supurovic: Ja više volim da prvo izvučem slog iz baze po korisničkom imenu a da zatim proverim da li je lozinka u tom slogu ista kao i ona unesena u login formi.

Najpre, tako je mnogo bezbednije, a zatim, po pravilu se uvek nešto makar loguje vezano za korisnika, pa makar i info da je neuspešan login, pa je dobro imati tekuće podatke o korisniku iako se nije ulogovao.


Sta mi vredi log da je neuspesan login za XY korisnika ako ja nisam siguran da je to bas taj korisnik sto znaci da je bolje da logujem username i psw ako vec treba da logujem nego da detektujem ID usera.
Sta ako ja ukucam tvoj username? Onda logujem tebe iako to nisi ti.
Sta ako ukucam pogresan username? Onda nema loga ili moras za ovaj slucaj da pises poseban log?

Ovo sa logovanjem je stvar moje i tvoje filozofije boljeg ali me interesuje u kom smislu je bezbednije?

[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1571 Profil

icon Re: Pomoc oko sesija i redirekcije07.06.2011. u 11:16 - pre 156 meseci
Mozes da logujes neuspesan login tog i tog usera cak i da ih brojis pa i da blokiras nalog po nekim kriterijumima.

Bezbednije je zato sto se lozinka ne proverava where uslovom pa su svi pokusaji sql injectiona i slicnih pokusaja sistemski osujeceni.

 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Pomoc oko sesija i redirekcije07.06.2011. u 12:11 - pre 156 meseci
Eto ja sada vidim tvoj username na ES-u i hocu da te blokiram i ukucam 10 puta tvoje username i ti budes blokiran.
Kako ES moze biti siguran da to ti hoces da se logujes a ne ja?

Kako ovo moze da se provali?
Code (php):

  $userid      = mysql_real_escape_string($_POST['userid']);
  $password = mysql_real_escape_string($_POST['password']);
  $query      = "SELECT * FROM admin
                    WHERE username='$userid' AND pass=SHA1('$password')"
;
 



[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.dynamic.isp.telekom.rs.

Sajt: https://avramovic.info


+46 Profil

icon Re: Pomoc oko sesija i redirekcije08.06.2011. u 15:24 - pre 156 meseci
Pa valjda blokiraš IP trenutne sesije, a korisnika možeš samo da obavestiš da je neko pokušao da se uloguje kao on toliko-i-toliko puta - neuspešno.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Pomoc oko sesija i redirekcije09.06.2011. u 07:05 - pre 156 meseci
Citat:
VladaSu: Kako ovo moze da se provali?
Code (php):

  $userid      = mysql_real_escape_string($_POST['userid']);
  $password = mysql_real_escape_string($_POST['password']);
  $query      = "SELECT * FROM admin
                    WHERE username='$userid' AND pass=SHA1('$password')"
;
 
Konkretno na taj način teško može da se provali, ali zato postoji Session Hijacking ili ako se koristi login preko cookies-a (npr. "remember me" opcija). Zato treba napraviti neki sistem koji će proveravati "kredibilitet" prijave korisnika. Kao što na primer google obaveštava korisnika kada se neko uloguje na isti nalog sa "udaljenom" IP adresom.
Ovakvi logovi mogu biti jedan "zid" više što se tiče sigurnosti.
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1571 Profil

icon Re: Pomoc oko sesija i redirekcije09.06.2011. u 09:22 - pre 156 meseci
Citat:
VladaSu: Eto ja sada vidim tvoj username na ES-u i hocu da te blokiram i ukucam 10 puta tvoje username i ti budes blokiran.
Kako ES moze biti siguran da to ti hoces da se logujes a ne ja?

Kako ovo moze da se provali?
Code (php):

  $userid      = mysql_real_escape_string($_POST['userid']);
  $password = mysql_real_escape_string($_POST['password']);
  $query      = "SELECT * FROM admin
                    WHERE username='$userid' AND pass=SHA1('$password')"
;
 


To je irelevantno. Sajt svakako ne smatra da je user onaj za koga se predstavlja dok ne ukuca tacnu lozinku.

Pretpsotvi da na sajtu hoces da uvedes mogucnsot blokiranaj usera koji neuspesko pokusa da se uloguje n puta. Zar nije prostije ako prilikom logina po useru izvuces podatke iz baze i takoutvrdis da username postoji i onda za taj username u bazi povecas neki brojac neuspesnih logina?

Ili, ako hoces da za usera podesis ogranicenje da moze da se uloguej samo sa unapred definisanog niza IP adresa. Zar opet niej lakse da po usernameu izvuces te podatke pa onda primenjujes logiku dozvole pristupa, nego da sve to trpas u jedan SQL upit koji ovim psotje i prilicno komplikovan?

Jenostavno, meni se cini da je mnogo jednostavnije, da naosnovu username izvucem podatke iz baze i time utvrdim da user postoji a da zatim primenjujem pravila dozvole pristupa koja se mogu oslanjati na bilo koji podatak koji imam o tom username-u. pa i proveru same lozinke. Em imam sve podatke na rapolaganju pa mi je lako da sa njima baratam, em logiku primenjujem na nivou PHP a ne MySQL-a pa tako islkjucujem mogucnosti injectiona.
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Pomoc oko sesija i redirekcije09.06.2011. u 13:51 - pre 156 meseci
Konkretno sam pitao sta je sigurnije a ne sta u odredjenim slucajevima moze biti prakticnije.
Jasne su meni razne primene razlicitih nacina ali ne shvatam sta je sigurnije.

@Nemanja - Da, koristim IP, ali ako cu da pazim da li neko hoce da provali vodim se pre IP adresom nego korisnickim imenom.
@Ivan - Opet je prica IP i username a ne ID usera. Opet se svodi na to da mozes da obavestis korisnika da je neko pokusao da provali sifru na njegovom
nalogu ali to opet nije povecanje sigurnosti. Ovo sto kazes za google je kada je vec prosla lozinka.

Citat:
Predrag Supurovic: To je irelevantno. Sajt svakako ne smatra da je user onaj za koga se predstavlja dok ne ukuca tacnu lozinku.
Pretpsotvi da na sajtu hoces da uvedes mogucnsot blokiranaj usera koji neuspesko pokusa da se uloguje n puta. Zar nije prostije ako prilikom logina po useru izvuces podatke iz baze i takoutvrdis da username postoji i onda za taj username u bazi povecas neki brojac neuspesnih logina?


Ja bih pre vezao to za username a ne za user_id jer je onda ista procedura ako user postoji i ako ne postoji. Stvar ukusa i zahteva a ne sigurnosti.

Citat:
Predrag Supurovic:
Ili, ako hoces da za usera podesis ogranicenje da moze da se uloguej samo sa unapred definisanog niza IP adresa. Zar opet niej lakse da po usernameu izvuces te podatke pa onda primenjujes logiku dozvole pristupa, nego da sve to trpas u jedan SQL upit koji ovim psotje i prilicno komplikovan?

Opet ako ne prodje istovremeno provera lozinke i username onda opet necu proveravati IP dozvole. Ne vidim da je ista komplikovaniji sql kod. Cak je mozda i jednostavniji. I opet stvar ukusa i zahteva konkretnog problema i detalja a ne sigurnosti.

Citat:
Predrag Supurovic:
...logiku primenjujem na nivou PHP a ne MySQL-a pa tako islkjucujem mogucnosti injectiona.

Mogucnost SQL injectiona je iskljucena. Mislim jeste tvoj kod sigurniji ako naredba mysql_real_escape_string zataji ali to je prosto neverovatno a ako zataji onda ces imati milion rupa na drugom mestu pa tako da
opet mislim da nije sigurnije nista vec samo mozes da koristis neke opcije vezane za user_id sto je iskljucivo stvar da li ima potrebe ili nema i stvar ukusa a ne sigurnost.

Ne pokusavam da se tu nesto prepucavam nego me cisto interesovalo kako je to sigurnije. Nisam mogao da zamislim po cemu je sigurnije a covek se uci dok je ziv pa sam cisto zeleo taj info.
Jeste tvoj kod sigurniji ako moj kod ima bug tj ako zaboravim mysql_real_escape_string. Ali onda ja mogu da pitam sta ako ti kod provere lozinke stavis:
Code (php):

if ($psw = $row['psw']) // stavis = umesto ==
 

I eto, ti imas jedan bug, ja imam jedan bug i oba koda imaju rupu, ja na nivou sql-a a ti na nivou php-a.

Mislim da bi bolje bilo da si rekao da je prakticnije.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1571 Profil

icon Re: Pomoc oko sesija i redirekcije09.06.2011. u 15:52 - pre 156 meseci
Citat:
VladaSu:
Jasne su meni razne primene razlicitih nacina ali ne shvatam sta je sigurnije.


Citat:
 
Ne pokusavam da se tu nesto prepucavam nego me cisto interesovalo kako je to sigurnije.


Citat:

Mislim jeste tvoj kod sigurniji ako naredba mysql_real_escape_string zataji


Citat:

Jeste tvoj kod sigurniji ako moj kod ima bug tj ako zaboravim mysql_real_escape_string.


Malo si zbunjujuci u komentarima, a cini mi se da ti je uglavnom stalo da tvoajbude poslednja. Da se razumemo ja nisam rekao da tvoj pristup ne valja nego sam opisao kako ja to radim smatrajuci da je to sigurnije. Sto te bi to toliko smeta, ne znam.

Da je sigurnije to si i sam zakljucio. Naprosto, iz SQL upita se izbacuje deo koji proverava privilegije. Tu se zavrsava sa prica o injectionu. Na jednoj jedinoj tacki u programu je sav injection problem resen, u toj meri da prakticno vise i ne mora da se koristi mysql_real_escape_string() na svakom parametru ili izrazu (sto ne znaci da ne treba i dalje to raditi, samo, je, eto, manji pritisak da se negde ne preskoci).

Postupak koji sam opisao je posledica mog visegodisnjeg iskustva, to jest, prakticno u svakom slucaju kada mi je na sajtu trebao login, kad-tad mi je zatrebalo da imam kontrolu procesa logina izmedju provere da li user postoji i da li je user uneo tacnu lozinku. Zato sam ja te dve obrade razdvojio, a uzgred dobio i vecu sigurnost provere logina.

Citat:

I eto, ti imas jedan bug, ja imam jedan bug i oba koda imaju rupu, ja na nivou sql-a a ti na nivou php-a.


Pordis babe i zabe. Bug koji bi napravio problem u mom prsitupu je sintaksni bug koji bi bio utvrdjen i otlonjen u prvom pokretanju koda. Bug koji ti mozes da napravis je semanticki i vrlo ga je tesko naci, odnosno, najverovatnije bi bio utvrdjen tek kada bi ga neko zloupotrebio. Da en ulayimo u to da j eu mom prsitupu sigurnost obezbedjena u jednoj tacki a tvoj pristup zahteva obazrivost jer se kontrola mora vrsiti na mnogo mesta - a dovoljno je samo na jednom od njih napraviti gresku i eto belaja.

Nadam se da ti je sad jasnije zasto je ovako kako ja radim sigurnije posto ja svakako nemam nameru da te u to ubedjujem.
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Pomoc oko sesija i redirekcije09.06.2011. u 16:55 - pre 156 meseci
Mislim da se nismo razumeli. Ja sam kontao da kada si rekao da je bezbednije to znaci da taj @nesh-ov primer ima neku rupu i da moze da se provali
pa sam hteo da naucim nesto novo jer nisam video da moze da se provali sa sql injection.

Pitao sam jer sam prosao tako da sam bio siguran da mi ne moze ukrasti sesiju a ipak mi drugar ukrao sesiju.
Tako sam i kod @nesh-ovog koda bio siguran da je 100% bezbedan pa sam mislio da mi kazes kako bi ga provalio ali tvoja sigurnost
se svodi na predpostavku da sam zaboravio elementarnu stvar da odradim (sto nije iskuljceno da ne moze da se desi ako ne koristim neku kvalitetnu db klasu ili fw).







[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

[es] :: PHP :: Pomoc oko sesija i redirekcije

[ Pregleda: 2024 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.