Versio

Cryptographic Nonce

Overzicht Reageren

Crispijn -

Crispijn -

30/01/2010 22:44:00
Quote Anchor link
Hoi allemaal,

Ik ben bezig met het ontwikkelen van een nieuwe website en ik ben me goed aan het oriƫnteren op het gebied van de beveiligingen die ik moet gaan toepassen. Nu heb ik de laatste tijd veel met WordPress gedaan en die werken met een nonce veld.

Even in een samenvatting: er wordt een verborgen veld in een formulier gestopt welke een unieke waarde heeft. Wanneer het formulier verstuurd wordt kijkt het systeem eerst of de nonce waarde wel binnen een bepaalde marge valt en of er dan verder dingen uitgevoerd morgen worden.

http://en.wikipedia.org/wiki/Cryptographic_nonce
http://codex.wordpress.org/Wordpress_Nonce_Implementation

Hoe kan ik dit het beste aanpakken? Zijn er voorbeelden van een algoritme dat ik hier voor kan gebruiken? Vinden jullie het nodig of is het schijnveiligheid?

Ik hoor graag wat jullie er van vinden.

Crispijn
 
PHP hulp

PHP hulp

24/05/2012 07:27:28
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Pim -

Pim -

31/01/2010 11:39:00
Quote Anchor link
Dit wordt meestal CSRF genoemd.
http://en.wikipedia.org/wiki/Cross-site_request_forgery

Wat het doet, is kijken of de geleverde data wel uit het oorspronkelijke formulier komen en dus niet met een directe request, wat spambots doen.

Een mogelijkheid is op de forumulier-pagina een willekeurige string genereren en deze zowel in de sessie op te slaan, als als een verborgen veld in het formulier te stoppen. Bij de afhandeling kan je dan controleren of deze twee data hetzelfde is. Zo ja, is het een legetiem request, zo niet is het waarschijnlijk een spambot.

Voorbeeld:

form.php
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
<html>
<body>
<?php
session_start();
$randomString = uniqid(rand(), true);
$_SESSION['csrf'] = $randomString;
?>

<form action="handler.php" method="post">
<input type="text" name="email" />
<textbox name="reply"></textbox>
<input type="hidden" name="csrf" value="<?php echo $randomString; ?>" />
<input type="submit" />
</form>
</body>
</html>


handler.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
session_start();
if($_SERVER['REQUEST_METHOD'] == 'post') {
    if($_POST['csrf'] != $_SESSION['csrf']) {
        die('Spambot detected');
    }

    // Handle request normally
}
?>

EDIT: Het is niet helemaal hetzelfde, csrf en nonce, maar het dient wel hetzelfde doel en lijkt mij eenvoudiger.
Gewijzigd op 01/01/1970 01:00:00 door Pim -
 
Crispijn -

Crispijn -

04/02/2010 16:29:00
Quote Anchor link
Hey Pim, dit ziet er inderdaad eenvoudiger uit. Geen lastige vergelijkingen en algeritmes, dit is net zo doeltreffend als je je sessie netjes weet te managen.

Weet iemand in hoe verre je dit soort houtje touwtje oplossingen moet toepassen als je gebruik maakt van Zend? Ik zit er over te denken om me hier in te verdiepen voor mijn nieuwe project voordat ik ergens aan begin waar ik later toch niet tevreden over ben.

Ik hoor graag van jullie!

Crispijn
 



Overzicht Reageren