login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Is dit veilig ?

Offline yannick - 09/01/2005 19:43 (laatste wijziging 09/01/2005 19:45)
Avatar van yannickPHP interesse hey mijn vraag is of deze code veilig is ?

  1. <? include("_include-config.php");
  2.  
  3. if(isset($_POST['login'],$_POST['pass'])) {
  4. $dbres = mysql_query("SELECT `login`,`activated` FROM `[users]` WHERE `login`='{$_POST['login']}' AND `pass`=MD5('{$_POST['pass']}')");
  5. if(($data = mysql_fetch_object($dbres)) && $data->activated == 1) {
  6. $validate = md5(rand(0,1000));
  7. setcookie("login",$data->login,time()+60*60*24,"/",".crimewar2004.com");
  8. setcookie("validate",$validate,time()+60*60*24,"/",".crimewar2004.com");
  9. mysql_query("REPLACE INTO `[online]`(`time`,`login`,`IP`,`validate`) values(NOW(),'{$_SERVER['REMOTE_ADDR']}','{$data->login}','$validate')");
  10. $_SESSION['login'] = $data->login;
  11. $_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
  12. $dbres = mysql_query("SELECT *,UNIX_TIMESTAMP(`signup`) AS `signup` FROM `[users]` WHERE `login`='{$_SESSION['login']}'");
  13. $_SESSION['data'] = mysql_fetch_object($dbres);
  14. }
  15. }
  16. else if($_GET['x'] == "logout") {
  17. mysql_query("DELETE FROM `[online]` WHERE `login`='{$_COOKIE['login']}' AND `validate`='{$_COOKIE['validate']}' AND `IP`='{$_SERVER['REMOTE_ADDR']}'");
  18. setcookie("login",'',time()-24*60*60,"/","");
  19. setcookie("validate",'',time()-24*60*60,"/","");
  20. unset($_SESSION['login']);
  21. unset($_SESSION['IP']);
  22. unset($_SESSION['data']);
  23. } ?>




doei

6 antwoorden

Gesponsorde links
Offline esteban - 11/01/2005 14:40
Avatar van esteban Nieuw lid Lol //--> is dit broncode gekopieerd uit criminals code ? :-D

/*
Brute Force (progje die verschillende mogelijkheden gaat testen , en dit doet tot een correct paswoord gevonden wordt . Login hier is niet moeilijk achterhaalbaar hé) is daar anders al heel makkelijk te doen ... Zet na 3 pogingen een timeout .

Let op voor Sql Injection ... Als ik mij niet vergis waren er toch wel enkele plaatsen waar het mogelijk was ( en aangezien dit publieke code is , is het niet moeilijk om DB structuur te kennen 
--> check eens of php optie 'magic_quotes_gpc' op true of false staat ... Beter die op true te zetten. zoniet ... maak dan gebruik van addslashes() op alle non-numerieke input , doe voor de veiligheid altijd test voor numerieke gegevens is_numeric())
*/
Offline Rens - 11/01/2005 14:47
Avatar van Rens Gouden medaille

Crew algemeen
Net zoals esteban zegt, let op voor de SQL Injection.
Het is hier heel simpel...

Zorg voor slashes voor quotes (single/double).
Dit doe je met addslashes.
Daarmee verklein je het risico op SQL Injections.

Mzzls,
Rensjuh
Offline remcobers - 11/01/2005 16:09
Avatar van remcobers PHP expert Hoe wil je hier een SQL Injection doen:S
Offline Rens - 11/01/2005 16:13 (laatste wijziging 12/01/2005 12:37)
Avatar van Rens Gouden medaille

Crew algemeen
Simpel.

$dbres = mysql_query("SELECT `login`,`activated` FROM `[users]` WHERE `login`='{$_POST['login']}' AND `pass`=MD5('{$_POST['pass']}')");

Je begint met een ', zodat hij bij login = '' krijgt.
Daarna kun je je eigen SQL code gebruiken.
En klaar...
Database ...^^

Lees dit maar eens door.
De 'webprogrammers hackingguide'.

Mzzls,
Rensjuh
Offline yannick - 11/01/2005 17:16
Avatar van yannick PHP interesse Bedankt iedereen maar kan er mij dan iemand uitleggen hoe je een timeout maakt ??? 

doei
Offline esteban - 12/01/2005 12:10
Avatar van esteban Nieuw lid bij 3de maal fout :-> datum & uur opslaan ...
indien dan die [datum & uur] < [datum & uur + ( uw timeout )] ...
Dan mag je nog niet inloggen

GrtZ
Esteban
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.192s