Veilig loginsysteem (MySQL)

Door Bram Boos, 11 jaar geleden, 19.765x bekeken

Met beveiliging voor Sessie hijacking, SQL injectie en maakt gebruik van password encryptie.

Veiligheid kan ik met dit script niet garanderen, belangrijk is om altijd goed op te letten want je bent zelf verantwoordelijk.

Ik weet dat er veel verschillende scripts op PHPhulp staan waarvan zeker meer dan de helft verouderd of niet veilig is.

Met dit script wil ik dat beginnend PHP-end Nederland ook veilige websites kan maken.

Getest op:
* Windows 7 (64bit) met PHP 5.3.0, MySQL 5.1.36 en Apache 2.2.11
* Windows 7 (32bit) met PHP 5.3.0, MySQL 5.1.36 en Apache 2.2.11
* Windows XP (32bit) met PHP 5.3.0, MySQL 5.1.36 en Apache 2.2.11
* Debian 5.0 (??bit) met PHP 5.2.14, MySQL 5.1.51 en Apache 2.2.16

Volgende release: 01-01-2011

Komt nog:
* Simpele registreer pagina
* Logout pagina
* Salt
* Verbeterde foutafhandeling

Voorbeeld (user: demo - pass: test)
Download (V 1.1)
Bug melding

Graag onderbouwde kritiek in plaats van 'domme' opmerkingen.

Bugs graag melden op de daarvoor bestemde website en niet bij de reacties. Zo kan alles sneller afgehandeld worden!

Gesponsorde koppelingen

PHP script bestanden

  1. Login pagina (login.php)
  2. MySQL
  3. Default pagina (index.php)
  4. Connectie pagina (conn.php)
  5. Check pagina (check.php)

 

Er zijn 30 reacties op 'Veilig loginsysteem mysql'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Max van den Bosch
Max van den Bosch
11 jaar geleden
 
Loginnaam/wachtwoord bij voorbeeld?...
Bram Boos
Bram Boos
11 jaar geleden
 
0 +1 -0 -1
Staat erachter hoor Max: (user: demo - pass: test)
Karl Karl
Karl Karl
11 jaar geleden
 
1 +1 -0 -1
- Salt ontbreekt.
- Sessions hebben ook hun eigen id.
- Echo van dat je geblokkeerd bent komt in het niets c.q. boven je html terecht?
- S.V.P. code tussen [code] en [/code] tags plaatsen.
- Melding dat er geen verbinding met database kon worden gemaakt komt ook in het niets terecht.
- Error reporting altijd uit op een live website.
- Onveilig systeem. Het koekje hebben en op hetzelfde ip zitten (bijvoorbeeld school) is voldoende om ingelogd te zijn.
- Geen logout?
- Geen referentie constraint op de tabellen?
Bram Boos
Bram Boos
11 jaar geleden
 
Dankje Karl! Ik ga er mee aan de slag!

Overigens, error reporting staat aan om eventuele bugs op te sporen. Verder staat alles tussen code tags.
Williy beek
Williy beek
11 jaar geleden
 
ik mis,
- Wachtwoord vergeten
- Registreren
- Wachtwoord veranderen
Bram Boos
Bram Boos
11 jaar geleden
 
0 +1 -0 -1
Het is een loginsysteem, geen gebruikerspaneel ofzo...

De dingen die jij opnoemt zijn heel simpel te maken en zoals ook in de omschrijving staat komt er nog een simpele registreer pagina.
Dalando De Zuil
Dalando De Zuil
11 jaar geleden
 
Hoezo Mysql? Je gebruikt Mysqli!
Chris -
Chris -
11 jaar geleden
 
Dalando, hij gebruikt de MySQLi interface, de opvolger van MySQL. Doe eerst je huiswerk voordat je dit soort nutteloze berichten plaats....
Toby hinloopen
toby hinloopen
11 jaar geleden
 
- Onveilig systeem. Het koekje hebben en op hetzelfde ip zitten (bijvoorbeeld school) is voldoende om ingelogd te zijn.

En hoe wil je dat voorkomen?
Pim -
Pim -
11 jaar geleden
 
0 +1 -0 -1
Je kan desnoods een fingerprint maken van de user agent, maar dat voegt vrij weinig toe.
Bram Boos
Bram Boos
11 jaar geleden
 
0 +1 -0 -1
Stel je zit in een school/bedrijfsnetwerk dan gebruikt iedereen meestal dezelfde browser. Updates gebeuren dan ook allemaal op hetzelfde moment dus daar kun je ook geen onderscheid in maken.
P Lekensteyn
P Lekensteyn
11 jaar geleden
 
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 'On');
echo 'Fout bij verbinding: '.$Mysqli->error;
?>

Lachen ^^

Even serieus, je moet nooit display_errors op On zetten in een productieomgeving, en zeker niet de databasefouten publiek maken.
Log alles stilletjes en geef een passende melding, bijvoorbeeld dat de dienst (tijdelijk) niet beschikbaar is.
Pim -
Pim -
11 jaar geleden
 
0 +1 -0 -1
@Bram, ja, er is natuurlijk geen waterdicht systeem te maken. Maar zoals ik al zei, voegt het vrij weinig, maar toch wel wat, toe
Bram Boos
Bram Boos
11 jaar geleden
 
@Peter;

Lezen is toch moeilijk:
Quote:
Overigens, error reporting staat aan om eventuele bugs op te sporen.


En waarom moeilijk doen met logging en alles?? Dit is een script, geen website...
P Lekensteyn
P Lekensteyn
11 jaar geleden
 
0 +1 -0 -1
@Bram
Inderdaad, lezen is heel moeilijk voor jou.
Ik heb geen problemen met error_reporting(E_ALL), ik raad het zelfs aan. Maar fouten moet je niet in een productieomgeving weergeven.
Dit is een script dat onderdeel kan uitmaken van een site.

Warning: Supplied argument is not a valid MySQL result resource in /www/vhost/phphulp/includes/php-scripts.php on line 238
Bram Boos
Bram Boos
11 jaar geleden
 
Dat begrijp ik best alleen het is aan de gebruiker wat die ermee doet.
Thomas Jansen
Thomas Jansen
11 jaar geleden
 
Wat moet je met een inlogsysteem zonder dat er een registreer systeem bijzit??
Jordi Kroon
Jordi Kroon
11 jaar geleden
 
Die kan je toch zelf maken ?
Bram Boos
Bram Boos
11 jaar geleden
 
@Thomas Jansen;
Lees eerst de andere reacties eens. Ik heb een paar reacties hiervoor duidelijk gemaakt dat je een registreer pagina eenvoudig zelf kunt maken.
Thomas Jansen
Thomas Jansen
11 jaar geleden
 
0 +1 -1 -1
Ik heb die reactie gelezen... Maar staad ergens hoe??
Dan snap ik dat jullie het mischien raar vinden als iemand van 11 op deze site zit,maar ik kan niet weten hoe je die registeerpagina moet maken.
Jurrian Nijland
Jurrian Nijland
11 jaar geleden
 
0 +1 -0 -1
@ Thomas: dat is niet raar hoor, je bent niet de enige (ik niet hoor). Maar als je dat allemaal niet snapt, dan kan je beter een tutorial gaan lezen of boeken lezen.
Chris -
Chris -
11 jaar geleden
 
Waarom gebruik je eigenlijk affected_rows, en niet num_rows?
Bram Boos
Bram Boos
11 jaar geleden
 
@Chris;
Dat was het eerste resultaat op de website van php. Zijn er voordelen en nadelen dan? Ben benieuwd.
Joey van der wal
joey van der wal
11 jaar geleden
 
0 +1 -0 -1
Is het verstandig deze te gebruiken of raden jullie me een ander script aan viind niet echt nieuwe scrips in dit genre?
Jurrian Nijland
Jurrian Nijland
11 jaar geleden
 
@ Joey
Als je een beetje ervaring met PHP hebt zal ik dit je zeker aanraden. Heb je dit niet, dan zal je toch echt eerst PHP moeten leren omdat er geen registratie-formulier bij zit.

Verder is het wel goed veilig! En anders? Google!
Philip van Leeuwen
Philip van Leeuwen
10 jaar geleden
 
0 +1 -0 -1
Ik wil dit script graag gaan gebruiken. Is dit nog steeds een veilig loginsysteem?
Williy beek
Williy beek
10 jaar geleden
 
tuurlijk maar de script zal je niet meer vinden via zijn site.
aangezien hij een fout had op zijn host.
Philip van Leeuwen
Philip van Leeuwen
10 jaar geleden
 
Thanks Williy.
Gelukkig dat de script bestanden nog op phphulp staan.
Bram Boos
Bram Boos
10 jaar geleden
 
Dat klopt inderdaad, door de installatie van wordpress zijn alle overige bestanden verloren gaan. Binnenkort zal ik een nieuwe versie uploaden met daarin betere wachtwoord encryptie(salt) en unieke sessies.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- Pepijn  -
- Pepijn -
7 jaar geleden
 
0 +1 -0 -1
Sorry voor deze onnodige bump, maar dit script is vulnable voor SQLi, als iemand zijn REMOTE ADDR aanpast naar -'SELECT * FROM users UNION intikt, ben je "dood"


Sommige mensen gebruiken dit systeem nog, daarom deze post

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Login pagina (login.php)
  2. MySQL
  3. Default pagina (index.php)
  4. Connectie pagina (conn.php)
  5. Check pagina (check.php)

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.