Versio

Het formulier

Natuurlijk begint alles met een formuliertje dat je invult:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<form action="login.php">
  Gebruikersnaam:<input type="text" name="username" />
  Wachtwoord:<input type="password" name="password" />
  <input type="submit" value="Login" />
</form>


De ervaren mensen zullen het meteen zien: hier ontbreekt nogal wat aan.

Ten eerste, er staat geen method in het formulier.
Daardoor zal er dus automatisch de GET methode gebruikt worden, oftewel: iedereen die achter je staat zal in de browser je wachtwoord/gebruikersnaam kunnen lezen!
Dus; toevoegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
method="post"

Ten tweede, veel mensen hebben de slechte gewoonte om wachtwoorden op te slaan.
Dit valt (voor sommige browsers, IE zeker) te voorkomen. Dit door het name atribut te verwijderen en daarvoor in de plaats alleen een id velt te gebruiken.
Het goede formulier wordt dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<form action="login.php" method="post">
  Gebruikersnaam:<input type="text" name="username" />
  Wachtwoord:<input type="password"id="password" />
  <input type="submit" value="Login" />
</form>


Als je nu het vooraf gaande login formulier gebruikt en je drukt op verzenden zullen je gegevens verstuurt worden naar de server. Niks mis mee zal je vast denken, niet helemaal.
Als je zou inloggen zou de hacker de verzonden data kunnen onderscheppen en alles ligt dan zo voor z'n neus. Hoe te voorkomen?
Simpel, client-side het wachtwoord hashen, dus zeg maar een soort javascript sha1() functie gebruiken.
Download hier
De nieuwe code wordt dan:
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
<script type="text/javascript" src="sha1.js"></script>

<script type="text/javascript">
function _submit() {
  document.getElementById('password_encrypted').value = hex_sha1(document.getElementById('password').value);
  document.getElementById('password').value = '';
  }
</script>

<form action="login.php" method="post" onsubmit="return _submit();">
  Gebruikersnaam:<input type="text" name="username" />
  Wachtwoord:<input type="password" id="password" />
  <input type="hidden" name="password_encrypted" value="" />
  <input type="submit" value="Login" />
</form>

« Lees de omschrijving en reacties

Inhoudsopgave
  1. Inleiding
  2. Het formulier
  3. Formulier verwerken
  • Gesponsorde koppelingen
Get Adobe Flash player