Inlogsysteem check

Status
Niet open voor verdere reacties.

MartinJM

Terugkerende gebruiker
Lid geworden
9 nov 2008
Berichten
1.144
Hallo allemaal,

Ik heb een inlogsysteem gemaakt en zou graag willen weten of dit veilig is en hoe ik de veiligheid misschien zou kunnen verbeteren.

Dit is de code van de inlogpagina van het systeem:

PHP:
<?php

session_start();
session_regenerate_id();

require("connect.php");

if($_REQUEST['submit']){

if(isset($_SESSION['user']) && isset($_SESSION['ip'])){

if($_SESSION['user'] == md5($_REQUEST['user']) && $_SESSION['ip'] == md5($_SERVER["REMOTE_ADDR"]) && $_SESSION['useragent'] == md5($_SERVER['HTTP_USER_AGENT'])){
echo "Je bent al ingelogd!";
}

}else{


$con = mysql_connect($host, $user, $pass);

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }else{


mysql_select_db($data, $con);

$result = mysql_query("SELECT * FROM login");

while($row = mysql_fetch_array($result))
  {

  if($_REQUEST['user'] == $row['username'] && $_REQUEST['pass'] == $row['password']){

echo("Ingelogd.");

$_SESSION['user'] = md5($_REQUEST['user']);
$_SESSION['ip'] = md5($_SERVER["REMOTE_ADDR"]);
$_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT']);


}else{

echo("Niet ingelogd.");

unset($_SESSION['user']);
unset($_SESSION['ip']);
unset($_SESSION['useragent']);
session_destroy();
}
}
}
}
}

if($_REQUEST['loguit']){

unset($_SESSION['ip']);
unset($_SESSION['user']);
unset($_SESSION['useragent']);
session_destroy();

}
?>

<html>
<body>

<form action="index.php" method="post">
Username:<input type="text" name="user"><br>
Password:<input type="pass" name="pass"><br>
<input type="submit" name="submit" value="submit">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="loguit" value="loguit">
</form>

</body>
</html>
(In connect.php staan $host, $user, $con en $pass. Dit zijn de gegevens die nodig zijn om in de database te komen.)


Op alle andere pagina's komt dan dit:

PHP:
<?php

session_start();
session_regenerate_id();

if($_SESSION['ip'] == md5($_SERVER["REMOTE_ADDR"]) && $_SESSION['useragent'] == md5($_SERVER['HTTP_USER_AGENT'])){

?>

Hier is diegene goed ingelogd.

<?php
}else{
?>

Hier is diegene niet ingelogd.

<?php
}
?>


Weet iemand of dit veilig is en hoe ik het anders zou kunnen verbeteren???

Alvast bedankt!:thumb:
 
Laatst bewerkt:
Dit zijn de belangrijkste dingen die mij zo snel opvallen:
Gebruik pdo ipv de oude mysql_* functies
Sla hashes (bijv. bcrypt) van de wachtwoorden op in de database, dus niet als plaintext!
Haal ook alleen de rule op van de gebruiker die wil inloggen, ga dus niet al je gebruikers doorlopen.
Input type pass bestaat niet, dit moet password zijn.
Zet error_reporting eens op -1, dan zullen verscheidene meldingen verschijnen

Denk er ook aan om de session_start & useragent check e.d. te centraliseren.
Mocht er dan iets aan veranderen hoeft dit maar op 1 punt te gebeuren, nu heb je vrij veel dezelfde code wat op elke pagina komt.
 
Dit zijn de belangrijkste dingen die mij zo snel opvallen:
Gebruik pdo ipv de oude mysql_* functies
Sla hashes (bijv. bcrypt) van de wachtwoorden op in de database, dus niet als plaintext!
Haal ook alleen de rule op van de gebruiker die wil inloggen, ga dus niet al je gebruikers doorlopen.
Input type pass bestaat niet, dit moet password zijn.
Zet error_reporting eens op -1, dan zullen verscheidene meldingen verschijnen

Denk er ook aan om de session_start & useragent check e.d. te centraliseren.
Mocht er dan iets aan veranderen hoeft dit maar op 1 punt te gebeuren, nu heb je vrij veel dezelfde code wat op elke pagina komt.
PDO is nu nog niet ondertekende lib dus niet nog als betrouwbaar weergegeven waar odbc al iets langer bestaat
Waarom zou je lib toevoegen als je het zonder kan dus advies pdo negeren voor mijn part.

session_start kan je doen bij gebruiker en kan je nadien promoveren naar user
doe het OO zodat je enkel een object heb. Het object mag nooit passwoord van user lossen dus moet volledig privaat zijn.(voor login gebruik je geen require of include das voor cowboys en idioten en bij gevolg niet veilig uitleg zie internet=>google=>zoeken)
 
Hallo,

Ik heb de code nu veranderd naar dit:

PHP:
<?php

session_start();
session_regenerate_id();

require("connect.php");

if($_SERVER["REQUEST_METHOD"] == "POST"){

if($_REQUEST['submit'] == "login"){


if(isset($_SESSION['user']) && isset($_SESSION['ip'])){

if($_SESSION['user'] == md5($_REQUEST['user']) && $_SESSION['ip'] == md5($_SERVER["REMOTE_ADDR"]) && $_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT'])){
echo "Je bent al ingelogd! (s)";
}else{

echo("FOUT! Je wordt nu weer uitgelogd.");

unset($_SESSION['ip']);
unset($_SESSION['user']);
unset($_SESSION['useragent']);
session_destroy();

}

}else{


$con = mysql_connect($host, $user, $pass);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }else{

mysql_select_db($data, $con);
$result = mysql_query("SELECT * FROM login WHERE username='".$_REQUEST['user']."'");
while($row = mysql_fetch_array($result))
  {
  if($_REQUEST['user'] == $row['username'] && md5($_REQUEST['pass']) == $row['password']){

echo("GOED!");

$_SESSION['user'] = md5($_REQUEST['user']);
$_SESSION['ip'] = md5($_SERVER["REMOTE_ADDR"]);
$_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT']);

}else{

echo("FOUT!");

unset($_SESSION['ip']);
unset($_SESSION['user']);
unset($_SESSION['useragent']);
session_destroy();
}
}
}
}
}else{

if($_REQUEST['submit'] == "loguit"){

echo("Uitgelogd!");

unset($_SESSION['ip']);
unset($_SESSION['user']);
unset($_SESSION['useragent']);
session_destroy();

}
}
}
?>

<html>
<body>

<form action="index.php" method="post">
Username:<input type="text" name="user"><br>
Password:<input type="password" name="pass"><br>
<input type="submit" name="submit" value="login">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="submit" value="loguit">
</form>

</body>
</html>

Zien jullie hier nog fouten in? Of hebben jullie misschien nog meer goede tips??

Bedankt voor de replies!:thumb:


@kenikavanbis: Wat bedoel je hier precies mee?
session_start kan je doen bij gebruiker en kan je nadien promoveren naar user
doe het OO zodat je enkel een object heb. Het object mag nooit passwoord van user lossen dus moet volledig privaat zijn.
 
dit staat mooier
PHP:
<?php
session_start();//dit maakt dat je login nadien niet kan includen
session_regenerate_id();
require("connect.php");
if($_SERVER["REQUEST_METHOD"] == "POST" && $_REQUEST['submit'] == "login"){
        if(isset($_SESSION['user']) && isset($_SESSION['ip'])){
        if($_SESSION['user'] == md5($_REQUEST['user']) && $_SESSION['ip'] == md5($_SERVER["REMOTE_ADDR"]) && $_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT'])){
            echo "Je bent al ingelogd! (s)";
            }else{ 
                echo("FOUT! Je wordt nu weer uitgelogd.");
                unset($_SESSION['ip']);
                unset($_SESSION['user']);
                unset($_SESSION['useragent']);
                session_destroy();
            }        
        }else{
                $con = mysql_connect($host, $user, $pass);
                if (!$con){
                  die('Could not connect: ' . mysql_error());
                }else{
                        mysql_select_db($data, $con);
                        $result = mysql_query("SELECT * FROM login WHERE username='".$_REQUEST['user']."'");
                        while($row = mysql_fetch_array($result)){
                            if($_REQUEST['user'] == $row['username'] && md5($_REQUEST['pass']) == $row['password']){//TODO let op voor zelfde users met verschillde wachtwoord
                                  echo("GOED!");
                         
                                $_SESSION['user'] = md5($_REQUEST['user']);
                                $_SESSION['ip'] = md5($_SERVER["REMOTE_ADDR"]);
                                $_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT']);
                                 
                            }else{
                             
                                echo("FOUT!");
                                 
                                unset($_SESSION['ip']);
                                unset($_SESSION['user']);
                                unset($_SESSION['useragent']);
                                session_destroy();
                            }
                        }
                }
        }
        }else{ 
            if($_REQUEST['submit'] == "loguit"){  
            echo("Uitgelogd!");
             
            unset($_SESSION['ip']);
            unset($_SESSION['user']);
            unset($_SESSION['useragent']);
            session_destroy();
        }
    
}
?>
 
<html>
<body>
 
<form action="index.php" method="post">
Username:<input type="text" name="user"><br>
Password:<input type="password" name="pass"><br>
<input type="submit" name="submit" value="login">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="submit" value="loguit">
</form>
 
</body>
</html>

?>


waar ik het over heb is een volledig constructie
dit is dan de vergelijking nadien waar je geen kennis moet hebben.

PHP:
if(isset($user)&& $user->islogin()){
    
}
alle verder code moet u bekijken op de opensource repos
let op alles is gnu
http://code.google.com/p/autosite/s...ite --username DJDataB@gmail.com/autositeV2.6
PHP:
class User {
	private $userpath;
	private $name;
	private $pasword;
	private $level;
	private $isuser;//
	private $kkey;
	private $remoteip;
	private $enabled;
	private $hashList =array();
	private $releasetime = 0 ;

	function User(){
		session_start();
	}
	//<<<<<<<<<<<<<<<<<<<<<<<FUNCTIONS>>>>>>>>>>>>>>>>>>>>>>>>>
	/**
	 * @param string $username
	 * @param string $path 
	 * @param string $kkey
	 */


  	//<<<<<<<<<<<<<<<<<<<<<<<Getters>>>>>>>>>>>>>>>>>>>>>>>>>
	/**
	 * @return bool
	 */
	function islogin(){
		return (isset($this->name)&& isset($this->releasetime) && $this->releasetime > time()&&$this->isenabled());//$this->isRemoteip());
	}
 
Laatst bewerkt:
Je moet wel
PHP:
$result = mysql_query("SELECT * FROM login WHERE username='".$_REQUEST['user']."'");
veranderen in
PHP:
$result = mysql_query("SELECT * FROM login WHERE username='".mysql_real_escape_string($_REQUEST['user'])."'");

Op dit moment is je script kwetsbaar voor SQL-injectie.
 
Bedankt voor de reacties!

@supersnail: bedankt, meteen gedaan!

@kenikavanbis: Sorry, ik ben (nog) niet echt goed met php.. Daardoor begrijp ik nog niet echt wat je bedoeld/hoe ik het toe moet passen (het eerste stukje code begrijp ik wel). Ook die link vind ik een beetje vaag, want als ik erop geklikt heb, dan kan ik kiezen uit veel bestandjes/mappen maar ik zie nergens de code staan die jij hebt gepost. :confused:
Kan/wil je graag nog wat uitleg geven?

Nogmaals bedankt voor alle reacties! En, alvast bedankt voor reacties! :thumb:
 
@kenikavanbis: Sorry, ik ben (nog) niet echt goed met php.. Daardoor begrijp ik nog niet echt wat je bedoeld/hoe ik het toe moet passen (het eerste stukje code begrijp ik wel). Ook die link vind ik een beetje vaag, want als ik erop geklikt heb, dan kan ik kiezen uit veel bestandjes/mappen maar ik zie nergens de code staan die jij hebt gepost.
Kan/wil je graag nog wat uitleg geven?

Alvast bedankt!

PS: Als iemand nog iets ziet wat verbeterd kan worden, graag dan een reactie met de verbetering erin. Alvast bedankt!

*EDIT*
Er zat nog een foutje in alle andere pagina's -> ik was vergeten te checken of er in de session wel iets stond, anders komt er een foutmelding dat hij niet weet wat 'ip' is in de session.(als ik niet ingelogd was)

Zo moet het zijn:

PHP:
<?php

session_start();
session_regenerate_id();

if(isset($_SESSION['useragent']) && isset($_SESSION['ip'])){

if($_SESSION['ip'] == md5($_SERVER["REMOTE_ADDR"]) && $_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT'])){

?>

Hier is diegene goed ingelogd.

<?php
}else{
?>

Hier is diegene niet ingelogd.

<?php
}
}else{
?>

Hier is diegene niet ingelogd.

<?php
}
?>
 
Laatst bewerkt:
Wat u zag is een repos voor open source nu wat dien je hiervoor te doen

je weet het is svn dan kijk je boven naar de link waarin trunk staat deze copyeer je en plaats je in je beter php editor je merkt dat hij zowat 100 tal files naar binnen haald deze staan onder lecentie gnu in is vrij te gebruike zie opensource toelatingen

dus te bemerken alle code die u daar ziet staan is opensource en is door mij gemaakt het betreft een cms die nog niet af is maar het volledig loginsysteem werkt users bijmaken en ect niet

het systeem svn houd elke opgeslagen versie bij op een compacte mannier en je kan vlug en effectief zien wat er is verandert

PS ik gebruik eclipse meer info kan ik je bezorgen.
 
Ik gebruik(te) gewoon kladblok, maar ik zal eclipse proberen. Ik kende het al wel(voor c/c++/java) maar ik wist niet dat ik er ook php mee kon maken.

Dan zal ik nu nog eens naar die link gaan kijken!
Ik laat nog verder van me horen!:p

Bedankt voor de uitleg!:thumb:

*EDIT* Sry, ik weet niet waar ik die link in Eclipse kan invoeren. Graag meer info! Alvast bedankt!:thumb:
 
Laatst bewerkt:
Sry, op de manier die je me hebt verteld werkt het niet:(

Maar heeft het echt hele grote (beveiligings) voordelen, en zo ja, welke dan? Want als de code die ik nu heb even veilig/handig is, dan ben ik daar ook tevreden mee.

PS: Plugins downloaden met eclipse werkt niet (meer). Dus als je een oplossing hebt dat ik het toch (met eclipse) kan bekijken, hou daar dan graag rekening mee.

Bedankt!:thumb:
 
Ik zou vragen eens de Eclipse Java EE IDE for Web Developers.Version: Helios Release te gebruiken net als ik die kan je gewoon in een ander path zetten

als je eclipse niet werkt gebruik je(uitvoeren) eclipse.exe -clean

maar verder zou ik denken aan deze:

Veiligheid je wachtwoordt word nog altijd verstuurt als plain text dus elke netwerkbeheerder kan je clienten hun wachtwoord lezen.

Wat doe je hiertegen met js je wachtwoord md5 over draaien en dan versturen merk op dat je dan van de regen in de drup komt te staan. men kan dan nog de md5 onderscheppen en alsnog voor mensen met meer kennis versturen.
dus je gaat een sleutel op de server aanmaken die per ip verschild en dan ga je die sleutel met het wachtwoord over een md5 draaien waardoor er telkens een ander waarde naar de server vertrekt dus wachtwoord vinden word dan moeilijk en de md5 copyeren heeft geen zin.

stel je houd enkele vorige verstuurde waarden bij je kijkt of die opnieuw binnenkomt dus op dat moment weet je hier iets niet pluis en kan je de session doen sterven (via code )kan je de gebruiker verwittigen dat iemand zijn login trachte te benevelen en beter moet uitkijken waar hij inlogt.
maar dit zal dan nog wel tijd in beslag nemen
 
Allereerst: Sorry voor de late reactie.

Het wachtwoord checken gebeurd wel met md5's....

En als iemand inlogt dan moet diegene toch zijn eigen wachtwoord invoeren. Verder wordt er ook nergens gecheckt op wachtwoord maar op ip en useragent.

Die worden dan ook als md5 opgeslagen in een sessie. Het wachtwoord wordt verder ook niet in de sessie of in een cookie opgeslagen. Het wachtwoord wordt gecheckt en als het klopt, dan wordt er een sessie aangemaakt met het ip en de useragent (als md5).

Ook is het zo dat ik op iedere pagina "session_regenerate_id();" gebruik, waardoor er in principe al iedere keer een nieuw id voor de sessie gemaakt wordt.


Dus waar zou ik dan nog een aparte sleutel moeten gebruiken??? En als er iedere keer een andere waarde naar de server gaat, hoe kan de server dan weten of die waarde klopt???



Even opfrissen: Dit zijn de codes die ik nu heb:

inloggen/uitloggen:
PHP:
<?php

session_start();
session_regenerate_id();

require("connect.php");

if($_SERVER["REQUEST_METHOD"] == "POST"){
	if($_POST['submit'] == "login"){
		if(isset($_SESSION['user']) && isset($_SESSION['ip'])){
			if($_SESSION['user'] == md5($_POST['user']) && $_SESSION['ip'] == md5($_SERVER["REMOTE_ADDR"]) && $_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT'])){
				echo "Je bent al ingelogd! (s)";
			}else{
				echo("FOUT! Je wordt nu weer uitgelogd.");
				
				unset($_SESSION['ip']);
				unset($_SESSION['user']);
				unset($_SESSION['useragent']);
				session_destroy();
			}
		}else{
			$con = mysql_connect($host, $user, $pass);
			if (!$con){
  				die('Could not connect: ' . mysql_error());
			}else{
				mysql_select_db($data, $con);
				$result = mysql_query("SELECT * FROM login WHERE username='".mysql_real_escape_string($_POST['user'])."'");
				while($row = mysql_fetch_array($result))
  				{
  					if($_POST['user'] == $row['username'] && md5($_POST['pass']) == $row['password']){
						echo("GOED! Je wordt nu doorgestuurd.");
						echo("<meta http-equiv='refresh' content='5;URL=/voorbeeld.php' />");

						$_SESSION['user'] = md5($_POST['user']);
						$_SESSION['ip'] = md5($_SERVER["REMOTE_ADDR"]);
						$_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT']);
					}else{
						echo("FOUT!");

						unset($_SESSION['ip']);
						unset($_SESSION['user']);
						unset($_SESSION['useragent']);
						session_destroy();
					}
				}
			}
		}
	}else{

		if($_POST['submit'] == "loguit"){
			echo("Uitgelogd!");

			unset($_SESSION['ip']);
			unset($_SESSION['user']);
			unset($_SESSION['useragent']);
			session_destroy();
		}
	}
}
?>

<html>
<body>

<form action="index.php" method="post">
Username:
<input type="text" name="user"><br>
Password:
<input type="password" name="pass"><br>
<input type="submit" name="submit" value="login">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="submit" value="loguit">
</form>

</body>
</html>

Alle andere pagina's:
PHP:
<?php

session_start();
session_regenerate_id();

if(isset($_SESSION['useragent']) && isset($_SESSION['ip'])){

	if($_SESSION['ip'] == md5($_SERVER["REMOTE_ADDR"]) && $_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT'])){

?>

Hier is diegene goed ingelogd.

<?php
	}else{
?>

Hier is diegene niet ingelogd.

<?php
	}
}else{
?>

Hier is diegene niet ingelogd.

<?php
}
?>


PS: Je hebt het over het met js versleutelen van het wachtwoord: Maar waarom niet gewoon met php?
 
Dus u wil dat bij voorbaat niemand uw wachtwoord kan lezen.
dus als het als text door de firewall->ect... kan elk tussenliggende server je paswoord onderscheppen en ook browservirus en dergelijke.

dus lees vorige post met iets meer aandacht en je merkt je groot lek op.

bekijk onderstaand cms en probleem is opgelost
 
Met eclipse is het niet meer gelukt, en verder heb ik nu eigen codes. Dus ik ben van plan om dat nog uit te breiden en verder niet meer naar die cms te kijken. Toch bedankt voor het verwijzen ernaar!

Ik heb nu deze code om het eerst te versleutelen en dan daarna pas te checken:

index2.php
PHP:
<?php

session_start();
session_regenerate_id();

require("connect.php");

if($_SERVER["REQUEST_METHOD"] == "POST"){
	if($_POST['submit'] == "login"){
		if(isset($_SESSION['user']) && isset($_SESSION['ip'])){
			if($_SESSION['user'] == md5($_POST['user']) && $_SESSION['ip'] == md5($_SERVER["REMOTE_ADDR"]) && $_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT'])){
				echo "Je bent al ingelogd! (s)";
			}else{
				echo("FOUT! Je wordt nu weer uitgelogd.");
				
				unset($_SESSION['ip']);
				unset($_SESSION['user']);
				unset($_SESSION['useragent']);
				session_destroy();
			}
		}else{
			$con = mysql_connect($host, $user, $pass);
			if (!$con){
  				die('Could not connect: ' . mysql_error());
			}else{
				mysql_select_db($data, $con);
				$result = mysql_query("SELECT * FROM login WHERE username='".mysql_real_escape_string($_POST['user'])."'");
				while($row = mysql_fetch_array($result))
  				{
  					if($_POST['user'] == $row['username'] && $_POST['pass'] == $row['password']){
						echo("GOED! Je wordt nu doorgestuurd.");
						echo("<meta http-equiv='refresh' content='5;URL=/voorbeeld.php' />");

						$_SESSION['user'] = md5($_POST['user']);
						$_SESSION['ip'] = md5($_SERVER["REMOTE_ADDR"]);
						$_SESSION['useragent'] = md5($_SERVER['HTTP_USER_AGENT']);
					}else{
						echo("FOUT!");

						unset($_SESSION['ip']);
						unset($_SESSION['user']);
						unset($_SESSION['useragent']);
						session_destroy();
					}
				}
			}
		}
	}else{

		if($_POST['submit'] == "loguit"){
			echo("Uitgelogd!");

			unset($_SESSION['ip']);
			unset($_SESSION['user']);
			unset($_SESSION['useragent']);
			session_destroy();
		}
	}
}
?>

<html>
<head>


<script language="javascript" type="text/javascript">
var iets2='';

function button1(){
iets2 = md5(document.getElementById("passi").value);
document.getElementById("pass").value = iets2;
document.form1.submit();
}
</script>

<script src="md5.js"></script>


</head>
<body>

<form action="index2.php" method="post" id="form1" name="form1" onsubmit="button1()">
Username:
<input type="text" name="user"><br>
Password:
<input type="password" name="passi" id="passi">
<input type="hidden" name="pass" id="pass" value=""><br>
<input type="submit" name="submit" value="login">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="submit" value="loguit">
</form>

</body>
</html>

md5.js: DIT IS JAVASCRIPT
PHP:
/**
*
*  MD5 (Message-Digest Algorithm)
*  http://www.webtoolkit.info/
*
**/
 
function md5 (string) {
 
	function RotateLeft(lValue, iShiftBits) {
		return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
	}
 
	function AddUnsigned(lX,lY) {
		var lX4,lY4,lX8,lY8,lResult;
		lX8 = (lX & 0x80000000);
		lY8 = (lY & 0x80000000);
		lX4 = (lX & 0x40000000);
		lY4 = (lY & 0x40000000);
		lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
		if (lX4 & lY4) {
			return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
		}
		if (lX4 | lY4) {
			if (lResult & 0x40000000) {
				return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
			} else {
				return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
			}
		} else {
			return (lResult ^ lX8 ^ lY8);
		}
 	}
 
 	function F(x,y,z) { return (x & y) | ((~x) & z); }
 	function G(x,y,z) { return (x & z) | (y & (~z)); }
 	function H(x,y,z) { return (x ^ y ^ z); }
	function I(x,y,z) { return (y ^ (x | (~z))); }
 
	function FF(a,b,c,d,x,s,ac) {
		a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
		return AddUnsigned(RotateLeft(a, s), b);
	};
 
	function GG(a,b,c,d,x,s,ac) {
		a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
		return AddUnsigned(RotateLeft(a, s), b);
	};
 
	function HH(a,b,c,d,x,s,ac) {
		a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
		return AddUnsigned(RotateLeft(a, s), b);
	};
 
	function II(a,b,c,d,x,s,ac) {
		a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
		return AddUnsigned(RotateLeft(a, s), b);
	};
 
	function ConvertToWordArray(string) {
		var lWordCount;
		var lMessageLength = string.length;
		var lNumberOfWords_temp1=lMessageLength + 8;
		var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
		var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
		var lWordArray=Array(lNumberOfWords-1);
		var lBytePosition = 0;
		var lByteCount = 0;
		while ( lByteCount < lMessageLength ) {
			lWordCount = (lByteCount-(lByteCount % 4))/4;
			lBytePosition = (lByteCount % 4)*8;
			lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
			lByteCount++;
		}
		lWordCount = (lByteCount-(lByteCount % 4))/4;
		lBytePosition = (lByteCount % 4)*8;
		lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
		lWordArray[lNumberOfWords-2] = lMessageLength<<3;
		lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
		return lWordArray;
	};
 
	function WordToHex(lValue) {
		var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
		for (lCount = 0;lCount<=3;lCount++) {
			lByte = (lValue>>>(lCount*8)) & 255;
			WordToHexValue_temp = "0" + lByte.toString(16);
			WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
		}
		return WordToHexValue;
	};
 
	function Utf8Encode(string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	};
 
	var x=Array();
	var k,AA,BB,CC,DD,a,b,c,d;
	var S11=7, S12=12, S13=17, S14=22;
	var S21=5, S22=9 , S23=14, S24=20;
	var S31=4, S32=11, S33=16, S34=23;
	var S41=6, S42=10, S43=15, S44=21;
 
	string = Utf8Encode(string);
 
	x = ConvertToWordArray(string);
 
	a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
 
	for (k=0;k<x.length;k+=16) {
		AA=a; BB=b; CC=c; DD=d;
		a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
		d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
		c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
		b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
		a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
		d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
		c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
		b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
		a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
		d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
		c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
		b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
		a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
		d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
		c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
		b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
		a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
		d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
		c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
		b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
		a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
		d=GG(d,a,b,c,x[k+10],S22,0x2441453);
		c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
		b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
		a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
		d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
		c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
		b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
		a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
		d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
		c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
		b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
		a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
		d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
		c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
		b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
		a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
		d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
		c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
		b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
		a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
		d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
		c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
		b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
		a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
		d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
		c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
		b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
		a=II(a,b,c,d,x[k+0], S41,0xF4292244);
		d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
		c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
		b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
		a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
		d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
		c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
		b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
		a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
		d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
		c=II(c,d,a,b,x[k+6], S43,0xA3014314);
		b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
		a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
		d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
		c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
		b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
		a=AddUnsigned(a,AA);
		b=AddUnsigned(b,BB);
		c=AddUnsigned(c,CC);
		d=AddUnsigned(d,DD);
	}
 
	var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
 
	return temp.toLowerCase();
}

Hebben jullie hier nog verbeteringen bij??

Alvast bedankt!
 
Ik zou de wachtwoorden niet crypten in md5, dit kan al ge enrcrypt worden en is onveilig.
Je kunt beter sha1 gebruiken met salt. ( Misschien heb je dit onderhand al gedaan ) ;p
 
Mag ik u vragen iets beter te lezen dan zal u zien dat het om versturen van de data gaat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan