| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
vlivius1
Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti
|
| Trimis: Sâm Iun 07, 2008 5:56 pm Titlul subiectului: Maxim 3 incercari |
|
|
Am citit in tutorialul lui oriceon despre contorizarea incercarilor de logare cu ajutorul sesiunilor. Daca o persoana incerca sa le se logheze si nu stie parola sau userul la a 3-ia incercare sa-i dea eroare.
Doresc cateva informatii despre logica cum ar trebui sa lucreze scriptul cu sesiunea pentru a face contorizare. |
|
| Sus |
|
tanatos
Data înscrierii: 06/Iun/2008
Mesaje: 62
Locație: Iasi
|
| Trimis: Sâm Iun 07, 2008 6:37 pm Titlul subiectului: |
|
|
| pai eu zic k e simplu ... salvezi intro variabila $_SESSION['nrincercari'] si cresti variabila aia la fiecare incercare nereusita.Verifici la inceputul paginii la fiecare reload daca variabila este == cu 3 si daca da afisezi mesajul.Best regards |
|
| Sus |
|
vlivius1
Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti
|
| Trimis: Sâm Iun 07, 2008 7:53 pm Titlul subiectului: |
|
|
M-am blocat la incrementarea $_session['incerci']
...
if(mysql_num_rows($rezultat) == 1){
$_SESSION['logat'] = 'Da';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=admin/indexs.php">';
}else{
$_SESSION['logat'] = 'Nu';
if($_SESSION['logat']) { $nr = $_SESSION['incercari'] = '1';
}
}
...
Daca fac cu cookie, nu este mai bine ca imi este mai usor? |
|
| Sus |
|
tanatos
Data înscrierii: 06/Iun/2008
Mesaje: 62
Locație: Iasi
|
| Trimis: Sâm Iun 07, 2008 8:11 pm Titlul subiectului: |
|
|
| din cate spune lumea cookie-urile sunt mai vulnerabile...deci foloseste session daca tot ai inceput cu asta |
|
| Sus |
|
tanatos
Data înscrierii: 06/Iun/2008
Mesaje: 62
Locație: Iasi
|
| Trimis: Sâm Iun 07, 2008 8:11 pm Titlul subiectului: |
|
|
| sa nu uiti sa cresti numarul de incercari daca nu s-a logat ... k nu am vazut prin codul tau asta |
|
| Sus |
|
olympia
Data înscrierii: 26/Mai/2008
Mesaje: 151
|
| Trimis: Dum Iun 08, 2008 1:03 am Titlul subiectului: |
|
|
ideea ar fi cam asta:
Cod:
session_start(); // nu uita sa pornesti sesiunea
if(mysql_num_rows($rezultat) == 1 && $_SESSION['logat'] != 'banat') {
$_SESSION['logat'] = 'Da';
header('Location: admin/index.php');
}else{
if (!isset($count))
{
$count = 0;
}
$_SESSION['logat'] = 'Nu';
}
if($_SESSION['logat'] != 'Da') {
$count++;
}
if ($count>2)
{
echo "ce vrei tu";
$_SESSION['logat'] = 'banat'; //il trimiti la o sesiune noua sau ce vrei
exit;
//sau header (Location: etc.
}
am mers pe ideea ta, desi modul asta de autentificare e putin complicat. e suficient sa inregistrezi sesiunile si sa le verifici ulterior fara $_SESSION['logat'] = 'Nu' (mai simplu $_SESSION['logat'] != 'Da'). indicat e sa mai inregistrezi in sesiuni si niste kestii encriptate in cazul unei autentificari reusite, dupa parerea mea.
nu e rau sa bagi si limit 1 in query.
ps in functie de mecansimul de autentificare pe care l-ai proiectat, nu uita sa reincarci formularul dupa fiecare incercare nereusita, dar nu cu header(Location:... , dk ai php_self in form. dk nu merge, il mai adaptezi si tu :D |
|
| Sus |
|
vlivius1
Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti
|
| Trimis: Dum Iun 08, 2008 12:49 pm Titlul subiectului: |
|
|
Din cauza ca eu defineam $nr = 0 nu imi functiona incrementarea pentru ca la fiecare accesare a scriptului imi lua mereu valoarea 0 si mai incrementa cu 1.
Asa ca am facut asa : $nr = $_session['nr'];
....
if(mysql_num_rows($rezultat) == 1){
$_SESSION['logat'] = 'Da';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=admin/indexs.php">';
}else{
$nr = $_SESSION['nr'];
if($_SESSION['logat'] != 'Da') { $nr++; }
$_SESSION['nr'] = $nr;
if($nr > 2) {echo 'BANAT';}
echo $nr;
function redirect() {
echo "<meta http-equiv=\"refresh\" content=\"1;URL=test.php\">\n";
exit();
}
redirect();
} |
|
| Sus |
|
alexandru_24
Data înscrierii: 11/Iul/2006
Mesaje: 95
|
| Trimis: Dum Iun 08, 2008 1:18 pm Titlul subiectului: |
|
|
Si daca un user da delete la sessiuni (cookie etc...)? O poate lua de la cap, corect?
Eu as merge pe versiune severa, adica as face un tabel, as contoriza acolo numarul de incercari, si in fiecare zi la ora x cu un cron job, as sterge intrarile din acel tabel, stiu ca e mai complicat, dar este varianta cea mai securizata ;) |
|
| Sus |
|
vlivius1
Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti
|
| Trimis: Dum Iun 08, 2008 1:36 pm Titlul subiectului: |
|
|
Daca ii inregistrezi ip-ul in baza de date pentru verificare el poate sa folseasca proxy. Dar este putin mai complicat.
Oricum este mai bine asa decat cum incerc eu sa fac, momentan sunt incepator mai tarziu o sa fiu si eu mai avansat :D |
|
| Sus |
|
alexandru_24
Data înscrierii: 11/Iul/2006
Mesaje: 95
|
| Trimis: Dum Iun 08, 2008 1:40 pm Titlul subiectului: |
|
|
| Fa cu tabel cum spun eu, o sa fii multumit. ;) |
|
| Sus |
|
olympia
Data înscrierii: 26/Mai/2008
Mesaje: 151
|
| Trimis: Dum Iun 08, 2008 2:09 pm Titlul subiectului: |
|
|
deci, de acord cu Alexandru - si lucrul cu sesiuni e mai sigur in DB. La un moment dat, orice webmaster va ajunge sa faca tabele cu suspectii care dau tarcoale saiturilor sale, si va inregistra nu doar ip-uri in db.
noi am discutat problema la nivelul la care a fost pusa. in exemplul pe care l-am dat io, lipseste tocmai inregistrarea sesiunii, pentru ca acolo sunt niste nuante, in functie de cum e apelat scriptul, cu php_self sau in fisier diferit. dk e cu php_self, nici macar nu mai e nevoie de sesiune, altfel sesiunea count s-ar incrementa in loop la "n" si ar da ban dupa prima ratare. apoi, dupa 2-3 incercari, mai bine bagi un captcha de inca 2-3 ori inainte sa ii dai ban, dupa parerea mea.
cu cron job-urile ce faci daca ai un hosting najpa? tre' sa folosesti pseudo-cron-uri.
si toate astea trebuie corelate cu masuri de securitate cel putin la fel de importante, cum ar fi blocarea accesului direct la scriptul care proceseaza logarea. pentru ca vine un bot care nu stie js :D si iti injecteaza mai stiu io ce pe acolo, de aceea si limit 1 in select la autentificare ar trebui pus by default. |
|
| Sus |
|
vlivius1
Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti
|
| Trimis: Dum Iun 08, 2008 2:25 pm Titlul subiectului: |
|
|
| OK am inteles, thks pentru sfaturi. |
|
| 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 |
|
| |