php-variabele met javascriptfunctie getElementById

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn Aikema

Martijn Aikema

10/09/2009 09:35:00
Quote Anchor link
Beste mensen,

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!
 
PHP hulp

PHP hulp

14/11/2024 04:14:38
 
Jan Koehoorn

Jan Koehoorn

10/09/2009 09:41:00
Quote Anchor link
Bijvoorbeeld zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
 
Martijn Aikema

Martijn Aikema

10/09/2009 10:32:00
Quote Anchor link
Bedankt voor je hulp. Ik kom er alleen nog niet helemaal uit. Misschien moet ik ook toelichten waarvoor ik het wil gebruiken.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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
 
Emmanuel Delay

Emmanuel Delay

10/09/2009 12:09:00
Quote Anchor link
Oei, ik weet niet of dat een goed idee is.

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
 
Martijn Aikema

Martijn Aikema

10/09/2009 12:36:00
Quote Anchor link
Ik gebruik hiervoor de md5 secure hash van Paj:
http://pajhome.org.uk/crypt/md5/
 
Emmanuel Delay

Emmanuel Delay

10/09/2009 13:36:00
Quote Anchor link
Dus, bij het inloggen stuur je niet het paswoord naar de server, maar md5(paswoord).

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
 
Martijn Aikema

Martijn Aikema

10/09/2009 13:57:00
Quote Anchor link
Via het script wordt inderdaad een wachtwoord gemaakt en opgeslagen in de variabele $wachtwoord. Deze wordt gecodeerd via het hex_sha1-script, voordat dit wachtwoord wordt verzonden. De variabele wordt gereset en zelf niet via het formulier verzonden. In plaats daarvan wordt het gecodeerde wachtwoord verzonden om vervolgens in de database te worden opgeslagen.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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.
 



Overzicht Reageren

 
 

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.