[js/php] encrypten voor de post

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hee mensen..
Ik ben bezig met login module. Nou wil ik dat het wachtwoord client site wordt versleuteld..

na wat zoeken leek me deze techniek het beste:

Je hebt een inlog script met 2 velden, een username veld en een password veld. Je wilt niet dat mensen je password kunnen onderscheppen, dus je encrypt dit d.m.v. javascript, maar als mensen nu het geëncrypte wachtwoord onderscheppen, kunnen ze nog steeds inloggen, ze kunnen immers de opgevangen data verzenden naar de server, dus wat je wilt is bij iedere POST een uniek iets toevoegen. Wat je dus in feite moet doen is dit:

Als iemand op de login pagina komt, stuur je d.m.v. php ook een hidden veld mee waarin een unieke key staat (een cijfer o.i.d.) Als het formulier vervolgens gesubmit wordt, stop je de username, het password en die key bijelkaar, en je encrypt het. Dan pas verstuur je de data naar je server. In je php script dat de login controleerd doe je hetzelfde, je voegt de username, het password en die key weer samen, en je encrypt dit. Vervolgens vergelijk je die 2 gegevens met elkaar, die zouden overéén moeten komen. Als de verzonden data dus anders was, klopt of het wachtwoord niet, of de username of er zat geen key bij/de key was fout.

Doordat je dus iedere keer een andere key gebruikt (random) kan iemand die die gegevens onderschept er niets mee, want de key is bij iedere aanvraag weer anders en dus kan hij/zij er nog niets mee

Nu weet ik niet of ik goed bezig ben .. ik zit ook beetje vast..

ik doe hetvolgende :

- client roept site op(hier wordt ook inlog.php in geladen)
- in inlog.php maak ik een unieke random string die elke keer verschillend is en
deze sla ik op in een sessie.
- deze sessie zet ik in een hidden field
<form name="login" method="post" onSubmit="maakCode();">
<input type="hidden" value="<? $_SESSION['random_password']?>">
- bij submit wordt maakCode() aangeroepen
daar maak ik de key..

en dan??
ik heb dan dan dit deel...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if ($_POST['login'])
    {   
        $loginnaam = $_POST['loginnaam'];
        $wachtwoord= md5($_POST['wachtwoord']);
        selecteerDB('db');
        $query="SELECT * FROM gebruiker WHERE gebruikersnaam='$loginnaam' AND wachtwoord='$wachtwoord'"; 
        $result=mysql_query($query);
        if (mysql_num_rows($result)==1)
        {
            $obj=mysql_fetch_object($result);
            //kijk of de gebruiker actief is.
            if($obj->geactiveerd=='0')echo"<script>alert('U bent niet (meer) geactiveerd en kunt niet inloggen.')</script>";
            else
            {
                $_SESSION['gebruikersid']    =$obj ->id;
                $_SESSION['gebruikersnaam']    =$loginnaam;
                $_SESSION['gebruikerstype'] =$obj->type;
                $_SESSION['lokatieid'] = $obj-> lokatieid;
                echo"<SCRIPT>document.location.href='http://index.php'</script>";
            }
        }


Maar bij het registreren zal het een andere random nr hebben , waardoor het anders in de db staat...

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Voordat je begint... Als je met JS gaat versleutelen, dan zit het bij de Client. Hierdoor kan iedereen bekijken hoe je versleutelt ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 20:50

Pelle

🚴‍♂️

Meer iets voor P&W :)

Overigens, als je echt veilig passwords over wilt sturen, is het een stuk makkelijker om gewoon met https te gaan werken :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BtM909 schreef op 28 oktober 2004 @ 12:10:
Voordat je begint... Als je met JS gaat versleutelen, dan zit het bij de Client. Hierdoor kan iedereen bekijken hoe je versleutelt ;)
Ja hoe moet ik het dan doen? serverside ? dan gaat ie plain over netwerk..
en SSL vind ik overbodig;)

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

1. SSL is noodzakelijk voor een echt goede beveiliging
2. Gebruik een challenge-response systeem voor authenticatie. Daar is nog niet zo lang geleden een interessant topic over geweest hier in P&W, met kant en klare voorbeeldcode. Met deze zoekterm kom je er ongetwijfeld.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt natuurlijk een one-way-hash maken in JS van de user+pass+random gegevens, en die aan de serverside vergelijken met de gegevens zoals ze in de database staan.. gegeven dat je t originele password uit je DB kan verkrijgen, icm met username en t bij de sessie horende 'random number'. Als de hashes overeenkomen heb je een match. Nadeel, je moet beschikking hebben over de originele passes aan de serverside, voordeel, eventuele misbruikers hebben er niets aan dat ze je encryptie methode aan de clientside kunnen zien in de JS.

Acties:
  • 0 Henk 'm!

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 05-09 21:19

Wacky

Dr. Lektroluv \o/

Hier was pas geleden nog een topic over: [rml][ Alg] Website beveiliging goed opzetten *[/rml]

Nu ook met Flickr account


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Intentionally left blank

Pagina: 1