php-variabele met javascriptfunctie getElementById
Ik ben een beetje aan het stoeien met javascript i.c.m. php. Ik kom er echter niet helemaal uit. Ik wil graag een variabele die ik via php heb gedefinieerd, $input, omzetten naar een variabele in javascript.
Ik weet dat je variabelen kunt ophalen met de functie getElementById. Maar volgens mij gaat dit alleen over hmtl-stukken die je op je pagina definieert. Ik wil echter de variabele $input niet op het scherm laten tonen. Is er toch een manier om de php-variabele om te zetten naar een een javascript-variabele?
Alvast bedankt!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
$str = 'Hallo wereld';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Jan Koehoorn</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
window.onload = init;
function init () {
var str = '<?=$str;?>';
alert (str);
}
</script>
</head>
<body>
</body>
</html>
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
$str = 'Hallo wereld';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Jan Koehoorn</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
window.onload = init;
function init () {
var str = '<?=$str;?>';
alert (str);
}
</script>
</head>
<body>
</body>
</html>
Ik wil dat bij mijn website automatisch een wachtwoord wordt gemaakt. Dit wachtwoord wil ik echter niet ongecodeerd over het internet laten sturen. Hiervoor heb ik een leuk stukje javascript gevonden die er voor zorgt dat het wachtwoord gecodeerd wordt opgeslagen in de database. Bij het inloggen wordt het ingevoerde wachtwoord ook gecodeerd en vergeleken met het wachtwoord in de database.
Het script is echter geschreven vanuit de optie dat de gebruiker zelf het wachtwoord invult. Hierbij wordt een response aangemaakt die vervolgens bij het versturen van het formulier wordt gepost
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
<!--
function createResponse()
{
document.getElementById( 'response' ).value = hex_sha1( document.getElementById( 'password' ).value );
document.getElementById( 'password' ).value = "";
return true;
}
//-->
</script>
<!--
function createResponse()
{
document.getElementById( 'response' ).value = hex_sha1( document.getElementById( 'password' ).value );
document.getElementById( 'password' ).value = "";
return true;
}
//-->
</script>
Het betreffende formulierveld heeft dus als id 'password' en deze wordt omgezet via hex_sha1 in id 'response'. De response wordt vervolgens gepost.
Nu wil ik dus echter zelf random een wachtwoord laten creeeren en deze omzetten naar id 'response' en vervolgens na het posten opslaan in de database.
Gewijzigd op 01/01/1970 01:00:00 door Martijn Aikema
Denk er aan: alles wat aan de client kant gebeurt, is 100% zichtbaar (misschien niet voor Piet Snot, maar wel precies voor de mensen tegen wie je je wil bechermen).
Als jij een coderingsalgoritme in javascript zet, ziet iedereen onmiddellijk waar ze naar moeten zoeken om het te kraken.
Kan je eens tonen welk algoritme je gevonden heb? Misschien ontgaat mee iets en is het systeem toch veilig.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Denk eens na over het volgende:
Stel, iemand krijgt een lijst te zien met de paswoorden van de leden, in de database. Uiteraard zijn die gecodeerd in de db.
Bij een gewoon login systeem heb je het paswoord nodig.
De hacker, die alle gegevens heeft, is er niet veel mee, want uit een md5(paswoord) kan je niet zomaar het paswoord halen.
Bij jouw systeem, zou de hacker kunnen inloggen, gewoon door login en dm5(paswoord) naar de server te sturen.
Heeft iemand anders hier een mening over? Ervaring mee?
De vraag is dus: is dit veiliger?
Volgens mij is het een beetje in contradictie met de bedoeling van md5.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Dit lijkt me redelijk veilig omdat het echte wachtwoord van de gebruiker nergens wordt doorgegeven. Om vervolgens in te loggen maak ik gebruik van de volgende codering:
* Er wordt een variabele $challange gemaakt. Deze wordt random gegenereerd en bevat 255 karakters
* Deze waarde wordt in een session opgeslagen
* Ik gebruik deze code om het wachtwoord te controleren:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
<!--
function createResponse()
{
document.getElementById( 'response' ).value = hex_sha1( hex_sha1( document.getElementById( 'password' ).value ) + ":" + document.getElementById( 'challenge' ).value );
document.getElementById( 'password' ).value = "";
document.getElementById( 'challenge' ).value = "";
return true;
}
//-->
</script>
<!--
function createResponse()
{
document.getElementById( 'response' ).value = hex_sha1( hex_sha1( document.getElementById( 'password' ).value ) + ":" + document.getElementById( 'challenge' ).value );
document.getElementById( 'password' ).value = "";
document.getElementById( 'challenge' ).value = "";
return true;
}
//-->
</script>
Het ingevoerde wachtwoord wordt gecodeerd en samengevoegd met de challange (die ik aanroep via een hidden-element in mn formulier). Deze totaal code wordt vervolgens nogmaals gecodeerd.Het resultaat wordt opgeslagen als 'response' en weer via een hidden-element via het formulier doorgegeven.
Bij het controleren van de login wordt het gecodeerde wachtwoord uit de database opgehaald en samengevoegd met de $challange die in de session was opgeslagen. Wanneer deze overeenkomt met de 'response' dan is de klant ingelogd.
Volgens mij is dit een behoorlijke veilige manier van inloggen en registreren.