login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Login

Offline SalCro - 11/07/2005 21:40 (laatste wijziging 11/07/2005 22:04)
Avatar van SalCroHTML interesse Hallo,
Ik ben reeds begonnen met mijn login pagina voor op mijn website.
Nu vroeg ik me af als ik goed begonnen ben.

Login.php

  1. <?php
  2. /*-- login.php --*/
  3. $usern = addslashes($usern);
  4. $pass = addslashes($pass);
  5. $geldig = addslashes($geldig);
  6. if (isset($_POST['submit'])) { //Gedrukt op submit...
  7. //Starten
  8. function user_login { //functie
  9. global $usern;
  10. global $pass;
  11. global $geldig;
  12. $db mysql_connect("localhost", "admin", "admin");
  13. mysql_select_db("members", $db);
  14. $query = "SELECT * FROM user_info WHERE username = '" . $usern . "' AND password = '" . $pass . "'";
  15. $result = mysql_query($query);
  16. $geldig = mysql_num_rows($result);
  17. }
  18. user_login();
  19.  
  20. //...
  21.  
  22. echo "Je bent nu ingelogd," . $usrn . <br>;
  23. echo "Klik <a href=\"?module=index\">hier</a> om terug te keren naar de hoofdpagina";
  24. } else { echo "Foute login, Probeer opnieuw";
  25. }
  26. ?>
  27.  
  28. <p class="small">Login voor leden, als je nog niet geregistreerd bent klik dan <a href="?module=register1">Hier</a></p>
  29.  
  30. /* -- Formulier -- */
  31.  
  32.  
  33. <?php
  34. }
  35. >

18 antwoorden

Gesponsorde links
Offline Dolfje - 11/07/2005 21:52
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
helemaal niet,
XSS-exploit :!:

moest ik naar je site gaan dan is je database kapot
index.php?pass=' DROP TABLE 'user_info

je moet pass en usern en geldig addslashes doen.
Offline SalCro - 11/07/2005 21:57
Avatar van SalCro HTML interesse
Citaat:
je moet pass en usern en geldig addslashes doen.


Hoe bedoel je ??
Offline Dolfje - 11/07/2005 22:00
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
ben je mee dat ik $pass kan veranderen in wat ik wil?

dan kan ik $pass veranderen naar: ' DROP TABLE 'user_info

dan word jouw query: SELECT * FROM user_info WHERE username = '" . $usern . "' AND password = '' DROP TABLE 'user_info'

en met DROP TABLE doe ik gewoon de database user_info weg.

nu om dit te voorkomen 

doe je rond alle variable's: $usern = addslashes($usern);
en dan word voor alle ' en " een \ gezet waardoor het bovenstaande niet meer lukt.
Offline SalCro - 11/07/2005 22:03 (laatste wijziging 11/07/2005 22:05)
Avatar van SalCro HTML interesse Ik heb het aangepast
Wat is eigenlijk het veiligst met cookies werken of met sessies

Dus moet je eigenlijk bijna altijd je variabelen met addslashes(); doen om een veiligheidslek te voorkomen ?
Offline Dolfje - 11/07/2005 22:05 (laatste wijziging 11/07/2005 22:12)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
alletwee tegelijk.

cookies kan je alleen gebruiken als de personen altijd moeten ingelogd zijn, ook als ze hun venster sluiten en weer opendoen.

Wat ik je ook aanraad is alles wat je in cookies zet met een md5() te encoderen en nooit een hele passwoord in een cookie zetten.

[edit]
als je met beide wilt werken, moet je eerst kijken als ze een cookie hebben, dan als ze een sessie hebben.
hebben ze alletwee moet je kijken als ze aan elkaar gelijk zijn en als de values kloppen.
Als er maar 1 is kijk je alleen als de values kloppen

[edit2]
wat ik ook voorstel is om je paswoorden niet zomaar in een database te zetten maar er ook eerst een md5() of sha5() hash rond te zetten

[edit3]
nog een grote fout, het is niet omdat de submit er is dat de member direct ingelogd moet zijn:

$usern = addslashes($usern);
$pass = addslashes($pass);
$geldig = addslashes($geldig);
if (isset($_POST['submit'])) { //Gedrukt op submit...
//Starten
function user_login { //functie
global $usern;
global $pass;
global $geldig;
$db mysql_connect("localhost", "admin", "admin");
mysql_select_db("members", $db);
$query = "SELECT * FROM user_info WHERE username = '" . $usern . "' AND password = '" . $pass . "'";
$result = mysql_query($query);
$geldig = mysql_num_rows($result);
return $geldig;
}

if( user_login() )
{

echo "Je bent nu ingelogd," . $usrn . <br>;
echo "Klik <a href=\"?module=index\">hier</a> om terug te keren naar de hoofdpagina";
}
else
{
echo "Foute login, Probeer opnieuw";
}
} else { echo "Foute login, Probeer opnieuw";
}
Offline Dolfje - 11/07/2005 22:13
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
k'zal maar stoppen met te editten:

Citaat:
Dus moet je eigenlijk bijna altijd je variabelen met addslashes(); doen om een veiligheidslek te voorkomen ?

Ja, als je iets in een mysql_query zet

als je iets uitprint (echo of print) moet je htmlspecialchars() doen
Offline SalCro - 11/07/2005 22:17
Avatar van SalCro HTML interesse dus als ik bijvoorbeeld een gebruikersnaam uit mijn db haal en wil weergeven moet ik het met htmlspecialchars() doen ?
Offline Dolfje - 11/07/2005 22:17 (laatste wijziging 11/07/2005 22:18)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
yup, anders kunnen ze zichzelf <b> heten. en dan is heel je layout naar de knoppen.

oftewel <script src='...'> en dan ... 
Offline SalCro - 11/07/2005 22:22
Avatar van SalCro HTML interesse Dus als ik het goed begrijp

var in db steken = addslashes();
iets uit db halen en weergeven = htmlspecialchars();

sorry ben nogal lastig 
Offline Gerard - 11/07/2005 23:48
Avatar van Gerard Ouwe rakker stripslashes() niet vergeten natuurlijk.
Offline SalCro - 11/07/2005 23:52
Avatar van SalCro HTML interesse waarvoor dient stripslashes dan ?:$
Offline Gerard - 11/07/2005 23:54
Avatar van Gerard Ouwe rakker om die slashes weer weg te halen bij het displayen 
Offline SalCro - 12/07/2005 00:00
Avatar van SalCro HTML interesse als je iets uit je db haalt ?
Offline cracker - 12/07/2005 00:21 (laatste wijziging 12/07/2005 00:42)
Avatar van cracker Onbekend inloggen:
  1. <?php
  2. ini_set("register_globals", "0");
  3. $usern = strip_tags(trim($_POST['usern']));
  4. $pass = sha1(strip_tags(trim($_POST['pass'])));
  5. function user_login {
  6. global $usern;
  7. global $pass;
  8. global $geldig;
  9. $db=mysql_connect("localhost", "admin", "admin");
  10. mysql_select_db("members", $db);
  11. $query = "SELECT * FROM user_info WHERE username = '" . $usern . "' AND password = '" . $pass . "'";
  12. $result = mysql_query($query);
  13. $geldig = mysql_num_rows($result);
  14. }
  15. if (isset($_POST['submit'])) {
  16. user_login();
  17. if($geldig == "1"){
  18. $gegevens = $usern . "+" . $pass;
  19. setcookie ("SalcroDi_login", $gegevens,time()+3600, "", "", 0); //1 uur geldige cookie
  20. echo("Je bent nu ingelogd, ".$usern.".\n<br>Klik <a href=\"?module=index\">hier</a> om naar de hoofdpagina te gaan");
  21. } else {
  22. echo("Foute login, Probeer opnieuw");
  23. }
  24. ?>
  25. <p class="small">Login voor leden, als je nog niet geregistreerd bent klik dan <a href="?module=register1">Hier</a></p>


Opvragen status inloggen:
  1. <?php
  2. ini_set("register_globals", "0");
  3. function loginstatus(){
  4. global $geldig;
  5. global $usern;
  6. global $pass;
  7. $db = mysql_connect("localhost","admin","admin");
  8. mysql_select_db("members", $db) or die(mysql_error());
  9. $query = "SELECT * FROM user_info WHERE username = '" . $usern . "' AND password = '" . $pass . "'";
  10. $result = mysql_query($query);
  11. $geldig = mysql_num_rows($result);
  12. }
  13. if(isset($_COOKIE['SalcroDi_login'])){
  14. $cookiedata = $HTTP_COOKIE_VARS['SalcroDi_login'];
  15. list($usern, $pass) = explode("+", $cookiedata);
  16. loginstatus();
  17. if($geldig == "1"){
  18. //alles weergeven
  19. }else{
  20. echo("Foute login ! - geknoeid met cookie !");
  21. exit();
  22. }
  23. }else{
  24. echo("U bent nog niet ingelogd !");
  25. }
  26. ?>

Al die optionele boel heb ik weggelaten, nu moogt ge content zijn Salcro 
Offline Maarten - 12/07/2005 03:05 (laatste wijziging 12/07/2005 03:06)
Avatar van Maarten Erelid
Citaat:
Al die optionele boel heb ik weggelaten

De haakjes rond echo zijn ook optioneel, net zoals de quotes rond integers 
Offline cracker - 12/07/2005 03:06 (laatste wijziging 12/07/2005 03:08)
Avatar van cracker Onbekend GAST stopt met snuiven
Ge hebt echt wat tegen mij en dat is NIET leutig !!!
Citaat:
De haakjes rond echo zijn ook optioneel, net zoals de quotes rond integers

1: met haakjes is het duidelijker
2: bij integers is het dan ook overzichtelijker
Offline Maarten - 12/07/2005 03:11
Avatar van Maarten Erelid 1: Ik snuif niet, let een beetje op je woorden graag en een minder grote mond kan ook.
2: Ik zeg altijd: hoe minder tekens hoe kleiner het bestand en hoe overzichtelijker
3: Quotes rond integers gaan integers behandelen als karakters (oid, ben woord ff kwijt), en in dit geval maakt dit idd niet uit maar het is beter om over het algemeen netjes te werken, want in andere gevallen kan dit wel tot fouten resultateren (array indexes bijvoorbeeld dacht ik).
Offline cracker - 12/07/2005 03:12 (laatste wijziging 12/07/2005 03:15)
Avatar van cracker Onbekend
Citaat:
Ik snuif niet, let een beetje op je woorden graag en een minder grote mond kan ook.

Doe dan zelf ook wat normaal astenblieft

Murfy edit: ik geef gewoon een opmerking die tot een verbeterde programmeerstijl van de topicopener kan leiden, als je daar problemen mee hebt kan je je wenden tot de klantendienst.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.282s