Avatar billede rab Nybegynder
29. januar 2003 - 20:53 Der er 31 kommentarer og
1 løsning

md5() password i PHP_SELF form

Jeg har en form med PHP_SELF og når jeg submitter sender jeg alle infos til samme side.

dog er der en af variablerne psw som jeg gerne ville have krypteret med md5() inden den sendes afsted.

Nogen der har en ide om hvordan det gøres?
Avatar billede _darkstar_ Nybegynder
29. januar 2003 - 20:54 #1
Avatar billede rab Nybegynder
29. januar 2003 - 20:55 #2
andre metoder? jeg fatter minus af js
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 20:57 #3
Ja, brug en https: forbindelse - så kan hele formen krypteres.
Avatar billede rab Nybegynder
29. januar 2003 - 20:59 #4
måske lige omstændigt nok til et lille konkurence script
Avatar billede caspers Nybegynder
29. januar 2003 - 21:02 #5
Du kan ikke bruge MD5 da den kun laver en hash, men med en ny PHP over 4.06 kan du:

// the message you want to encrypt and send to your secret agent
// in the field, known as nighthawk.  You have his certificate
// in the file nighthawk.pem
$data = <<<EOD
Nighthawk,

Top secret, for your eyes only!

The enemy is closing in! Meet me at the cafe at 8.30am
to collect your forged passport!

HQ
EOD;

// load key
$key = file_get_contents("nighthawk.pem");

// save message to file
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);

// encrypt it
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,
    array("To" => "nighthawk@example.com", // keyed syntax
          "From: HQ <hq@example.com>", // indexed syntax
          "Subject" => "Eyes only")))
{
    // message encrypted - send it!
    exec(ini_get("sendmail_path") . " < enc.txt");
}



og decrypt:

// $cert and $key are assumed to contain your personal certificate and private
// key pair, and that you are the recipient of an S/MIME message
$infilename = "encrypted.msg";  // this file holds your encrypted message
$outfilename = "decrypted.msg"; // make sure you can write to this file

if (openssl_pkcs7_decrypt($infilename, $outfilename, $cert, $key))
    echo "decrypted!";
else
    echo "failed to decrypt!";
Avatar billede rab Nybegynder
29. januar 2003 - 21:12 #6
jeg skal jo ikke sende noget som email (det ser ud som om det er det man gør med Caspers)

$psw=md5($psw) skal jo bare køres inden siden reloader, kan det ikke gøres på en nemmere måde?
Avatar billede _darkstar_ Nybegynder
29. januar 2003 - 21:39 #7
caspers>>> Du skriver at "Du kan ikke bruge MD5 da den kun laver en hash"

Det passer ikke. rab har netop en rigtig god pointe i at kigge efter MD5-funktioner fordi at de kan benyttes til challenge-response-autentikering. Symmetrisk kryptering er ikke et godt valg i denne sammenhæng.

Til rab:

Hvis du gerne vil have at det indtastede password bliver MD5'et før at det forlader klienten, er du nødt til at lave det i JavaScript. De eneste alternativer er VB-script (som kun virker i IE) eller en Applet. Begge af disse alternativer er rigtig dumme.

Jeg synes at du skulle prøve at få JavaScript-tingen til at virke. Det er klart den bedste løsning. Jeg taler af erfaring.

På samme side som jeg henviste til ovenfor er iøvrigt også diskussioner af challenge-response-autentikering.

Et p.s.: hvis du skal bruge det i forbindelse med førstegangsregistrering, hvor du ønsker at beskytte folks password imod man-in-the-middle eller eavesdropping, kan du ikke (så vidt jeg ved) bruge MD5. I så fald er det en løsning som caspers eller erikjacobsen, der skal bruges.
Avatar billede caspers Nybegynder
29. januar 2003 - 21:50 #8
darkstar: OK jeg så ikke at det skulle bruges til password, du har ret
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 21:54 #9
"omstændigt nok" ?? De fleste webhoteller tilbyder vel en
fælles https: til alle webhoteller på samme server, og
så er det jo lige til at gå til.

Nå, ja, måske ikke de der 5 kr/m webhoteller, men i hvert
fald webhoteller af anstændig kvalitet.
Avatar billede rab Nybegynder
29. januar 2003 - 21:58 #10
=>darkstar Jeg har ikke noget imod at det gøres i js, jeg ved bare ikke hvordan man gør og om det er svært.
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:01 #11
Hvis det md5()-ede password opsnappes af
trediepart, vil det kunnne genbruges af en
hacker. Det er da en beskeden ekstra sikkerhed,
men ikke noget at råbe hurra for.
Avatar billede rab Nybegynder
29. januar 2003 - 22:04 #12
=> erikjacobsen - det har du ret i men det er hvad jeg behøver.

=>darkstar

Hvis jeg bruger flg:

<script language="JavaScript" type="text/javascript" src="md5.js"></script>

<form method="post" action="default.asp" onSubmit="this.pwd.value = calcMD5(this.pwd.value); return true;">
<input type="password" value="" name="pwd"><input type="submit" value="Login">
</form>

er variablen pwd så krypteret?
Avatar billede rab Nybegynder
29. januar 2003 - 22:06 #13
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:09 #14
rab: hvorfor har du kun brug for pseudosikkerhed?
Det du gør, giver dig reelt ingen ekstra sikkerhed
hvis en hacker vil ind. Måske kun ekstra sikkerhed for
forældre og mindre søskende ...
Avatar billede rab Nybegynder
29. januar 2003 - 22:14 #15
=> erikjacobsen

Det forhindre at andre kan gå ind og se hvilke sider ern given browser har været i og se:

givsvar.php?navn=test+ip&psw=NJænpånjpoinPp&svar=1

istedet for:

givsvar.php?navn=test+ip&psw=tuborg&svar=1
Avatar billede _darkstar_ Nybegynder
29. januar 2003 - 22:16 #16
>>>rab - du sprøger om det giver ekstra sikkerhed og dertil er svaret nej.

Jeg foreslår at du vælger om du vil sætte dig ind i hvordan det virker, eller blot lader det ligge og sender login/password i plain text.

Der er en udemærket lille forklaring her:

http://pajhome.org.uk/cgi-bin/md5auth.py

Hvis du vælger "midtervejen" - at benytte MD5 uden at få det til at indgå i et challenge-response-system, så har du sat dig imellem to stole - usikkert og indviklet.
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:17 #17
Nej, for en hacker kan bare bruge NJænpånjpoinPp i stedet for.
Min pointe: det er ikke ekstra sikkerhed - og derfor ligegyldigt.
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:18 #18
Lidt ekstra sikkerhed kan du få ved at bruge POST i stsdet
for GET
Avatar billede _darkstar_ Nybegynder
29. januar 2003 - 22:19 #19
I dit eksempel hvor "tuborg" bliver til "NJænpånjpoinPp" er "NJænpånjpoinPp" jo netop blevet til det nye password. Man kan bare kopiere det og sætte det ind et passende sted. Den eneste forskel er, at brugeren ikke opdager hvor usikekrt, det er fordi at han ikke opdager at du reelt sender hans password i plain text.

Med andre ord: du snyder brugeren til at tro at kodeordet er beskyttet. Det synes jeg ikke er nogen god idé.
Avatar billede _darkstar_ Nybegynder
29. januar 2003 - 22:20 #20
Skift din form til at benytte POST. Put password og de øvrige oplysninger i et skjult felt og glem tankerne om hashing hvis du ikke vil gå hele vejen.
Avatar billede _darkstar_ Nybegynder
29. januar 2003 - 22:21 #21
erikjacobsen>> nåeh. Vi er tilsyneladende enige :-)
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:21 #22
Addendum: POST plus HTTP-headere omkring ikke-caching af sider :)
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:22 #23
Selvfølgelig er vi enige darkstar. Vi har jo ret :)
Men måske jeg bare skulle holde mund, så vi ikke
snakker i munden på hinanden... *g*
Avatar billede rab Nybegynder
29. januar 2003 - 22:31 #24
Jeg må være træt :-)

Havde ikke tænkt på: "I dit eksempel hvor "tuborg" bliver til "NJænpånjpoinPp" er "NJænpånjpoinPp" jo netop blevet til det nye password."

Jeg har skiftet til post (og har nu lært forskellen på de 2)

HTTP-headere, er det bare disse der skal sættes ind?

<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">


Takker for hjælpen selv om jeg var lidt "slow"
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:34 #25
Du kan også - og bør - lave dem som:

header(""Cache-control: no-cache");

der er også flere slags - jo flere, jo bedre....
Avatar billede rab Nybegynder
29. januar 2003 - 22:36 #26
Hvorfor skal der egentlig bruges no-cache?
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:39 #27
Ellers bliver siden med dit password gemt
et sted på klientens maskine, eller på
en proxy-server undervejs.
Avatar billede rab Nybegynder
29. januar 2003 - 22:50 #28
=> erik skal der stå noget udenom header(""Cache-control: no-cache"); og hvor skal den stå i koden?
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 22:58 #29
header("Cache-control: no-cache");

er det jo .. skriv som det første på siden. Før HTML og
tomme linier. Og, ikke at forglemme: det er PHP
Avatar billede rab Nybegynder
29. januar 2003 - 23:02 #30
tusind tak...

Erik => Hvis du vil have points må du lige smide et svar også.
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 23:08 #31
nej, tak - ingen point til mig. Jeg forsøger ihærdigt
at slippe for det PRO-abonnement jeg uden eget ønske
er blevet påduttet af eksperten.dk
Avatar billede rab Nybegynder
29. januar 2003 - 23:12 #32
=> Erik :-))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester