Ledenscript

Door Joeri , 16 jaar geleden, 6.170x bekeken

Omdat de meeste loginscripts niet werken als de cookies van een bezoeker af staan ben ik zelf aan eentje beginnen werken. Om hijacken van een SESSIE tegen te gaan heb ik gebruik gemaakt van een database, waar ik dan ook ineens een klein leden script aan vast heb gemaakt.

Edit:

wachtwoord en username worden weldra uit de cookies en sessies verwijderd en aangepast met een unieke session id per lid opgeslagen in een database en cookie of sessie.

Script werkt wel degelijk indien cookies af staan, PHPSESSID wordt dan mee doorgegeven via de url.


Geplande uitbreidingen:
- layout, avatar en andere persoonlijke instellingen per lid.
- verdere uitbreiding van leden script.
- volledig admin gedeelte voor beheer layout, leden en database.
Daar ik eerst de msql gedeelten aan het wijzigen ben naar mysqli zijn deze updates voor later.

Een setup bestand zit er nog niet echt bij maar de tabellen en administrator worden wel reeds automatisch aangemaakt via het admin gedeelte.

Je moet wijzigingen toepassen in 3 bestanden in de map includes namelijk:
- config.inc.php
- mysql_config.php
- login.inc.php

en indien gewenst kan je in config_register.inc.php ook even een kijkje nemen en een eventuele mimimumleeftijd indtellen om te registreren.

Het staat steeds duidelijk beschreven welke gegevens je mag/moet aanpassen.

installatie
Je maakt een database aan indien je die nog niet hebt.
Je download het zip bestand op onderstaande link en pakt het uit, upload het naar een gewenste map op je server en pas de gegevens aan in bovenvermelde bestanden.

Na het uploaden en aanpassen ga je in je browser naar de map waar je de bestanden naartoe hebt geupload met "/admin" erachter. Dus als je naar http://www.jedomein.be/ledenscript hebt geupload ga je naar http://www.jedomein.be/ledenscript/admin daar neem je dan tabellen aanmaken en kies je ledenscript (de andere functies in admin zijn voor versie 1.1 en 1.2 enkel database beheer werkt ook reeds gedeeltelijk)

Als alles goed is gegaan kan je het voorbeeld nu gebruiken op http://www.jedomein.be/ledenscript/voorbeelden/voorbeeld.php

Alle opbouwende / aanvullende kritiek is meer dan welkom.
Edit:

- preg_match controle op invoer username toegevoegd!
- Probleem van verkeerde pagina na registratie zou opgelost moeten zijn.
- Je krijgt nu 5 seconden een boodschap te zien dat je geregistreerd bent.


testen kan je met test en TEST123

Download het script: http://www.jb-web.org/downloads/scripts/php/ledenscript.zip

Voorbeeld: http://www.jb-web.net/scripts/Eigen Scripts/ledenscript/voor

Gesponsorde koppelingen

PHP script bestanden

  1. ledenscript

 

Er zijn 28 reacties op 'Ledenscript'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Mebus  Hackintosh
Mebus Hackintosh
16 jaar geleden
 
0 +1 -0 -1
Voegt dit iets toe denk je?

Quote:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/httpd/vhosts/jb-web.net/httpdocs/scripts/Eigen Scripts/ledenscript/includes/login.inc.php on line 136


Even comma's in de input velden neergezet... Veilig???? NEE
- wes  -
- wes -
16 jaar geleden
 
0 +1 -0 -1
1 woord


witregels
Jacco Engel
Jacco Engel
16 jaar geleden
 
0 +1 -0 -1
Dat zijn er toch echt 3 wes

@Onderstaand :
ROFL :P
- wes  -
- wes -
16 jaar geleden
 
0 +1 -0 -1
eigenlijk 2, als je toch wil mierenneuken
Joeri
Joeri
16 jaar geleden
 
0 +1 -0 -1
@mebus: waar krijg je die error, ik ondervind die namelijk niet, kan je even melden wanneer je die krijgt??
Edit:
Ga een controle toevoegen op tekeninvoer op het formulier. zodat idd die num_rows error wegvalt als je bvb / \ of * ingeeft in de gebruikersnaam
bedankt voor de melding
Alfred -
Alfred -
16 jaar geleden
 
0 +1 -0 -1
Wachtwoord nooit in een sessie stoppen.
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
3 aandachtpunten die ik zo op het eerste zicht gevonden heb:
Quote:
Omdat de meeste loginscripts niet werken als de cookies van een bezoeker af staan ben ik zelf aan eentje beginnen werken.
Maar je script werkt constant met cookies..

•Tegen Session Hijacking denk ik wel dat het goed beveiligd is, maar je slaat alle gegevens op in een cookie, zodat je gewoon username en ww kan inlezen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<? //lijn 30 - 31
$cookiedata = explode("/", $_COOKIE[$cookie_name]);
    list($coo_username, $coo_passsword, $coo_user_ip, $coo_verified, $cookie_remember) = $cookiedata;
?>
Dus zit dit in de cookie: "username/wachtwoord/127.0.0.1/yes/true".
Jij noemt dit veilig?

• De activatiemail komt maar niet aan, ook is er bij de registratiepagina geen melding of je nu geregistreerd bent of niet. (ik kwam 2 maal terug op dezelfde pagina zonder enige melding)
Kevichill
Kevichill
16 jaar geleden
 
0 +1 -0 -1
is er geen test acount :/
Joeri
Joeri
16 jaar geleden
 
0 +1 -0 -1
@hipska: als de browser zijn cookies af staan dan pas werkt die met enkel SESSIES. dat was ook de bedoeling Ik ga wel even zien hoe ik best het wachtwoord uit de SESSIE en de COOKIE kan halen en tochnog het gewenste resultaat krijg. het is wel met sha1 en md5 omgezet maar weet dat dat niet veilig genoeg is? Ga even uitzoeken hoe ik dat kan oplossen. Bevestiging dat je geregistreerd bent is zeer kort, dit kan ik eenvoudig weizigen, een mail wordt er echter nog niet gezonden.

Bedankt voor de nuttige opmerkingen, ge ze zeker aanpassen omdat ik hoop dit toch verder te kunnen uitwerken tot een volledig ledenscript. Alle opmerkingen zijn welkom.

@Robert Deiman: Reuze bedankt daar ga ik onmiddelijk aan werken. Ik wilde net een post op het forum zetten hoe je anders eigenlijk een user kan verifieren zonder dat je ergens zijn wachtwoord opslaagd? dus met sessie id's werken per user en deze starten en dan controles uitvoeren? Maar waar slaag je dan de info op ter controle??

en wat als iemand het session id uit de cookie leest en die met ?PHPSESSID= in de url ingeeft is dit toch net even onveilig als een wachtwoord met encryptie ? ik had namelijk verschillende controles ingebouwd om het zo veilig mogelijk te maken maar dat een gebruiker toch herkend wordt.
Robert Deiman
Robert Deiman
16 jaar geleden
 
0 +1 -0 -1
SHA1 en MD5 is te kraken (wel "the hard way" door bruteforce, maar toch) Online kraken is niet te doen, omdat het script dan teveel tijd nodig zou hebben. Het meest eenvoudig is een sessie-id koppelen aan een account in je database.

Deze ID kan je wel in een cookie zetten, omdat dan geen gegevens van een gebruiker bekend worden. Tevens zet je daar het IP adres in (alleen in je db, niet in het cookie). Mocht iemand met een ander ip-adres dan de code toch hebben meegenomen, dan blokkeer je hem.

(ook dit is te omzeilen,dat weet ik wel. Het is een zetje in een richting)
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
nogmaals @Joeri:
• dus als cookies niet werkt, dan werk je met sessions zeg je, maar je sessie-id wordt aan php meegegeven door de COOKIE "phpsessid". Dan zal het alsnog niet werken.

• wat ben ik ermee als ik mij registreer en geen mail ontvang? Ik kan dan nog steeds niet inloggen, want ik moet nog een activatiemail krijgen..

• in je cookie staat de username en wachtwoord en nog meer, als ik die kookie overneem + de cookie met phpsessid, kan ik wel redelijk ver geraken denk ik.
Joeri
Joeri
16 jaar geleden
 
0 +1 -0 -1
@hipska: bekijk dan eerst het script goed?? als cookies afstaan gaat de Sid mee via de url??? Test het met je cookies af zou ik zo zeggen, uiteraard als je je browser sluit zijn de sessie sdan ook gedaan. Zonder Cookies of met het werkt beide, je zal dadelijk het verschil zien in je adresbalk als je cookies afstaan.
En het is vrij goed getest op zelf aangemaakte cookies en sessies, en normaal ga je je cookie ook niet delen met iemand anders veronderstel ik? Als de sessie overgenomen wordt word het ip gecontroleerd. Testen zou ik zeggen en laat me zeker de resultaten weten.

Je kan wel inloggen met rechten "nieuw lid" achteraf kan een admin je rechten verhogen!! waar zie je ergens iets van een bevestigingsmail? Is zeker wel een idee om toe te voegen.

ben wel bezig de raad van robert toe te passen en username en wachtwoord uit de sessies en cookies te halen en elk lid een sesid te geven in de db.

Opmerkingen omtrend onduidelijkheden steeds welkom.

Edit:

@niek: bedankt voor die melding is omdat er op dat moment een tweede gebruiker op een andere pc is aangemeld met dezelfde gebruikersnaam denk ik als je met test hebt ingelogged kan dat of als je geen fixed ip hebt van je provider en je lease time verloopt dan heb je dat ook, zal dat aanpassen dat je een melding krijgt dat je nog ingelogged bent of bent geweest vanop een andere pc? Al zal je normaal niet vanop 2 pc's tegelijk inloggen of je moet inderdaad opnieuw inloggen, stel je logged niet uit op de ene pc en meld je aan op een andere dan moet je inderdaad opnieuw aanmelden.
Niek s
niek s
16 jaar geleden
 
0 +1 -0 -1
Niek klikt op "Herladen"

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
!! IP NIET OK !!
Er werd een cookie teruggevonden maar de data erin is corrupt! Gelieve opnieuw in te loggen


:-/
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
Quote:
@hipska: bekijk dan eerst het script goed?? als cookies afstaan gaat de Sid mee via de url??? Test het met je cookies af zou ik zo zeggen, uiteraard als je je browser sluit zijn de sessie sdan ook gedaan.


• Je script goed bekijken ... denk je dat ik tijd te veel heb? Je code van login.inc.php is veel te onoverzichtelijk door te weinig (geen) gebruik van comments, wat dus wil zeggen dat ik lijn per lijn moet uitzoeken wat het doet en waarvoor het dient in het script.
Geef het wat meer comments en ik zal je script met plezier nagaan!

• Testen kan ook niet, daar ik nog steeds niet een activatiemail gehad heb..

• Cookies geef je idd niet door, maar ze kunnen wel gestolen worden.
Joeri
Joeri
16 jaar geleden
 
0 +1 -0 -1
@hipska: nogmaals waarom activatie mail?? die heb je niet nodig?? Er wordt er zelfs geen gestuurd voor de moment. je kan automatisch inloggen met het opgegeven paswoord en usernaam bij registratie. je hebt enkel zeer weinig rechten? En ik zal de code opschonen, als je wil gooi het er dan maar af en zal ik het eerst aanpassen. Bij mijn testen tot nu toe werkt het fijn al ben ik de raad van hier aan het opvolgen ivm veiligheid cookies en sessies.
Arjan Schuurman
Arjan Schuurman
16 jaar geleden
 
0 +1 -0 -1
IP NIET OK, dan wil ik gaan inloggen, kom ik in een keer op de registratie pagina uit :S:S...
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
3 maal getest, zei telkens dat username niet gevonden is. ik heb ook al 3 maal geregistreerd met dezelfde naam..

als hij die fout niet zegt, en op inloggen geklikt heb kom ik op een leeg (zwart) scherm..

Dit script is alles behalve af!!
PHP Newbie
PHP Newbie
16 jaar geleden
 
0 +1 -0 -1
Nadat ik er 10 minuten over heb gedaan om te registreren, log ik in (werkt), maar zodra ik de pagina herlaad schijnt het IP verkeerd te zijn en word ik uitgelogd...
Niek s
niek s
16 jaar geleden
 
0 +1 -0 -1
ja da probleem heb ik dus ook ( ik gebruikte alleen wel het test account )

Dit was @ PHP Newbie, btw.
Joeri
Joeri
16 jaar geleden
 
0 +1 -0 -1
@PHP Newbie: heb nogal veel beveiligingen in de input van de registratie gezet. Van dat IP moet ik eens nazien, al ondervind ik en 10 testpersonen geen problemen. Na zelfs 2 dagen ingelogged te blijven en uiteraard de browser af te sluiten werkt alles prima. Heb wel opgemerkt dat het voornamelijk de mensen uit NL zijn die er problemen mee hebben. Hoe lang hou je je ip, wat is je standard lease-time van je provider??

Zouden de mensen die het probleem van IP ondervinden eventueel kunnen nazien welk ip er in de cookie staat en welk je huidig ip is bij refresh? En/of die personen met een router werken??

je kan je ip mee opvolgen in de database op
http://www.jb-web.net/scripts/Eigen%20Scripts/ledenscript/admin/db_beheer.php?s_script=leden&s_tables=leden_stats

Bedankt voor de aanvullende opmerkingen daar ben ik iets mee.
 
0 +1 -0 -1
Dit script is leuk geprobeerd, maar ik raad het af om het echt te gaan gebruiken, er zitten namelijk behoorlijk veel fouten in die te maken hebben met beveiliging, en dan vooral het checken van user-input, en het geven van gevoelige informatie.
Joeri
Joeri
16 jaar geleden
 
0 +1 -0 -1
@andries: bedankt voor uw positieve reactie, over het leuk geprobeerd, al doende leert men he? En met de opmerkingen van op PHPhulp kan ik wat veranderingen aanbrengen ivm paswoord en username & ip niet in de cookie op te slaan, ben volop bezig het script aan te passen met een session_id per user en enkel dat op te slaan in een cookie.

Bedankt voor de reacties allemaal.
Henri V
Henri V
16 jaar geleden
 
0 +1 -0 -1
Hier zit toch wel toekomst in als het script eenmaal goed werkt. Ben net op zoek naar zo'n script.

Werkt ook zonder cookies
In je cookie stop je je session_ID
wachtwoord encrypt opslaan in database,
controle met IP-adres, Url
logboek houdt activiteit bij.
Session inactief -> unset destroy.
Joeri
Joeri
16 jaar geleden
 
0 +1 -0 -1
@henri: ben het volop aan het aanpassen en de nuttige tips van phphulp er aan het insteken met bvb een extra beveiliging tegen sha1/md5 hash door er een regel in te stoppen als opdelen in stukken van 4 chars en blok 1 naar 3, 4 naar 1 enz. deze dan weer encrypteren en opslaan in de database, het enige wat nog in de cookie komt is het unieke sessid van de gebruiker. Ip controle blijft erin zitten.
Henri V
Henri V
16 jaar geleden
 
0 +1 -0 -1
Hoe kan ik de map includes het beste beveiligen.
Ik twijfel tussen .htacces en chmod
Joeri
Joeri
16 jaar geleden
 
0 +1 -0 -1
dat kan je toch wel het beste doen met .htaccess order deny, allow
deny from all en dan enkel allow voor je eigen server.

Ben nog wel veel aanpassingen aan het doen, de basis zal hetzelfde blijven enkel ben ik aan het aanpassen dat er enkel nog een uniek session id wordt weggeschreven in de cookie en in de database en ook enkel in de database het IP, Al heb ik ondervonden dat sommigen, waarschijnlijk mensen die op een mega router met korte leasetiime, steeds opnieuw mopeten inloggen als het IP veranderd is, dat ben ik ook nog aan het aanpassen, ben enkel nog aan het zoeken hoe ik dat op een veilige manier kan oplossen.

wordt met session_register('unieke sessie naam') per user.
 
0 +1 -0 -1
Helaas is de download niet meer beschikbaar. Ik ben op zoek naar een goed werkend leden script
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Remie
remie
14 jaar geleden
 
0 +1 -0 -1
@Yearupie
Kijk eens naar de datum van de post & reacties...

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

Inhoudsopgave

  1. ledenscript

Labels

  • Geen tags toegevoegd.

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.