Hee php gasten!
Ik heb in php een standaard php inlogmodule gemaakt. Het wachtwoord staat dmv md5() functie van php ge-encrypt in de database..
Maar als ik bij een client inlog zou het ww eerst naar de server moeten worden gestuurd, en is dan dus nog niet ge-encrypt.. php is overigens serverside.
Maar goed, het wachtwoord is niet ge-encrypt tijdens route naar server dus.Met andere woorden, tis onveilig.. De browser van de client moet het dus encrypten.. iemand enig idee hoe? waarschijnlijk wordt het dan dus java..
???
Hij zet de md5 wachtwwoord om meer niet....
Ik kan je aanraden om beveiligings vragen hier te doen : http://www.polar-lights.com/hackerhunter/ ... deze mensen zijn al een tijdje bezig met het maken van login beveiliging (php) en hun script schijnt vrijwel even safe data te versturen als SSL encryptie , en dat met javascript en zonder extra kosten van SSL , ze kunnen je vast tips geven.
Sander schreef op 12.01.2005 15:27
Is dat script van: http://pajhome.org.uk/crypt/md5/md5.js
nou "echt" veilig, ik heb nie zo veel verstand van java :(.

Het is JavaScript.

Is wel leuk om te weten maar Java zelf heeft geen ingebouwde functie voor MD5
Uhm, echt veilig is je site nu nog steeds niet. Je kunt zo iemands sessies stelen en daarmee alsnog inbreken. Maak dus ook een sessie met iemands ip adres en vergelijk dit steeds met de $_SERVER['REMOTE_ADDR'] variabele. Dan pas krijg je een enigsinds waterdichte beveiliging. Voor de zekerheid ook even de variabele door addslashes heen halen. Dr zijn altijd freaks die je query proberen te veranderen waardoor je script denkt dat je toegang hebt.
@Jeroen
Hoe wou je een sessie stellen of veranderen?
Lees de php hacking guide op phpfreakz en je begrijpt waarom ;)
Als je goed programmeerd dan is je website niet te (helemaal) te hacken.

Ben met je eens dat deze manier wel te hacken is maar zie je tegenwoordig zelde
index.php?PHPSESSID=deSessieID

Maar als PHP een cookie op jouw computer zet, hoe wou je er dan bij komen?

En hoe wij jij komen in de map met die sessie gegevens? Met Remote PHP execution? Als het goed is doet iemand dat niet een variabelen include, dan ben je namelijk ook vat baar voor o.a. de santy worm

-------

Als ik een denk fout maak, wijs me er dan op. Maar mijn conclusie:
- Erg veel werk, kans op resultaat bij goed geprogrammeerde site 1%
Je moet natuurlijk altijd als hacker een beetje vertrouwen op "onozele" webmasters die ervanuit gaan dat er niets gebeurd op een site. Stel je hebt een gastenboek op je website met ubb parser. Deze is slecht beveiligd en je zet in een link een javascriptje die al je gegevens van je cookie doorstuurt naar een door hem gemaakte pagina. Als jij of iemand anders zo dom is om dan op die link te klikken heeft de hacker je cookie. Die kan em zelf setten en meteen je sessie overnemen zonder dat je het weet.

Je script is dus niet meteen gevoelig, maar het is meestal een samenloop van omstandigheden, maar zorg dus dat je altijd controleert dat degene die van de sessie gebruikmaakt ook de sessie mag gebruiken. Door bij het aanmaken van je sessie een ip adres in de sessie te zetten en deze iedere keer te controleren met het ip adres uit de $_server['REMOTE_ADDR'] variabele dan weet je dat die gebruiker ook de rechten mag krijgen. Kwestie van enkele regels code en altijd goed opletten of er geen misbruik van zaken gemaakt kunnen worden.

Mensen die geen md5 hash of iets dergelijks gebruiken: altijd wachtwoorden en usernames door add_slashes heen halen, anders kun je sql injection toepassen. T is niet de eerste keer dat ik dit soort problemen ben tegengekomen. Deze laatste hacking methode is veel gevaarlijker. Je bent dan in 1 seconde ingelogd als admin met alle gevolgen van dien. Even een voorbeeldje om het uit te leggen.

Stel je hebt de volgende code:

<?php
include "config.php"; //mysql verbinding
$check = mysql_num_rows(mysql_query("SELECT * FROM users WHERE username='$username' AND wachtwoord='$wachtwoord'"));
if($check == 1) {"
$login = 1;
Session_Register("login")
}
?>
Dit is maar een klein voorbeeldje waar dus ook voorstaand lek in voorkomt. Als je nu als gebruikersnaam en wachtwoord het volgende intypt:
a' or '1'='1' or 'b dan wordt de query:
SELECT * FROM users WHERE username='a' or '1'='1' or 'b' and wachtwoord ='a' or '1'='1' or 'b'

Mensen die SQL beter kennen weten dat je in een query vergelijkingen kunt doen. Deze vergelijking is altijd waar, dus zal mysql_num_rows waarschijnlijk een 1 teruggeven. Resultaat is dat je ingelogd bent. Door add_slashes te gebruiken worden de quotjes eruit gehaald en kan deze hacking methode dus niet gebruikt worden.

Voor meer info zie dus die hacking guide op phpfreakz die zeker de moeite waard is om een keer door te nemen.

Reageren