GD2 key generator

Door St.Chessere , 18 jaar geleden, 2.735x bekeken

met deze afbeelding ben je in iedergeval nu goed beveiligt tegen brute force aanvallen op je login script wat veel mensen deden was de code in de broncode vermelden als
<img src="img.php?code=4sfr5af48" /> en dan bewaarden ze de waarden ook nog een in een hidden textfield genaamd secret code nou daar komt elke bot binnen een seconde achter wat de nog weer nieuwere bot's kunnen is het plaatje scannen op letters en cijfers daarom heb ik het zo gedaan dat de karakter elke keer een verschillende draai krijgen heel handig tegen die bots dan hebben ze geen hou vast en dan is een brute force vrijwel onmogelijk
vergeet niet deze script voorkomt dat de gene die de form invult niet een bot is dus je kan altijd nog gekraakt worden door escaping etc maar dat kan je heel makkelijk zelf verhelpen maar daar heb ik het deze keer niet over dat komt in mijn volgende script

Wat moet je doe, dat is vrij simpel noem de script bijv img.php of wat je dan ook wilt en zet hem dan in een <img/> tag bijv <img src="img.php" /> en je moet natuurlijk gd functies aan hebben staan

De code die wordt gegenereerd in het plaatje, wordt ook opgeslagen in een SESSION. Dit is $_SESSION['code']. In $_SESSION['code'] staat dus het gegenereerde woord. Wanneer iemand de code invoerd in een 'form input field' (tekstveldje in HTML), dan kun je dus de ingevoerde waarde, matchen op $_SESSION['code']. Komt dit overeen, dan is het goed gedaan, zo niet dan moet diegene het nogmaals proberen.

Gesponsorde koppelingen

PHP script bestanden

  1. gd2-key-generator

 

Er zijn 31 reacties op 'Gd2 key generator'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
je kunt er misschien even bij vermelden hoe je het precies gebruikt, waar de code mee moet overeenkomen en meer wat je kunt bedenken om dit scriptje in de praktijk te gebruiken.. verder netjes gemaakt..
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
maar hoe bedoel je met "waar de code mee moet overeenkomen". en bedankt ik heb er ook 4 uur aangewerkt
P.v.Denzel
P.v.Denzel
18 jaar geleden
 
0 +1 -0 -1
Nou bas om te zorgen dat computers zich niet kunnen aanmelden :P
ik vind het een stoer scriptje, is alleen maar van login.php want ik snap er de balle niet van :D
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
ja maar dat lijkt me toch logisch
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
nee oke mar als je kijkt naar de url dan kan een beetje php het wel zien wat ik bedoel
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
moet ie wel op de url klikken :P
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
nou nee want die bot kent alle fonts en als ie hem niet kent gaat hij de lijnen volgen of de structuur maar je hebt gelijk dat ie aan de hoogdte het zou kunnen zien maar je hebt ook iets in html height daarmee kan je de hoogte afdwingen
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
maar dit is maar een deel van een script deze gaat bij mij weer door een andere script die hem de hoogte geeft die is nog niet online in mijn login is dit niet de engiste beveiliging
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
nee i know maar daarom gaat ie weer door een andere gd die het plaatje hoogte bepaald maar die is nog niet online ;-)
Bart Waarom verplicht
Bart Waarom verplicht
18 jaar geleden
 
0 +1 -0 -1
Maar hoe kan je dit nou gebruiken in een login script?
Hoe kan je het vergelijken?
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
via in de anders script $_SESSION['code'] opteroepen en te vergelijken met de input van de user
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
Nou, je moet een code invoeren om verder te kunnen.. Maar waarmee moet die code overeenkomen?! Er staat bijvoorbeeld etewtst in het plaatje, als dat wordt ingevoerd, en het formulier wordt verstuurd, waarmee moet die code dan worden gematched!? Wanneer die code wordt gegenereerd door je scriptje, moet hij toch ook overeenkomen met iets? Dus moet die code dan toch ergens naartoe worden weggeschreven?!
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
ja is logisch, maar dat zit niet in het script :)
Arend a
Arend a
18 jaar geleden
 
0 +1 -0 -1
Geweldig script, misschien is het enige zwakke punt dat de rotatie van de tekst is af te leiden van de hoogte van het script. Volgens mij is het gebruik van verschillende lettertypen zoals je elders ziet een betere oplossing.
Arend a
Arend a
18 jaar geleden
 
0 +1 -0 -1
Houd er rekening mee dat de html height is eigenlijk alleen voor de browser is om het plaatje op een bepaalde manier weer te geven. Het veranderd niets aan het plaatje (wordt niet upgesampled ofzo).
Bram Z
Bram Z
18 jaar geleden
 
0 +1 -0 -1
wijs script, kweet wel niet of het op men server werkt
Robbert
Robbert
18 jaar geleden
 
0 +1 -0 -1
Ik heb ook zoiets gebruikt op mijn website...
hiermee verberg ik mail adressen van mensen (ze zien een bepaalde code)
en de output is een plaatje met het mail adres...

Leuk script (ik gebruik een zelf geschreven overigens...)


18 jaar geleden
 
0 +1 -0 -1
wat is gd?
Dat staat bovenin in de uitleg!
Johan
Johan
18 jaar geleden
 
0 +1 -0 -1
voorbeeld werkt niet echt:S


18 jaar geleden
 
0 +1 -0 -1
Klopt is ook all lang verwijdert :D
Basbox112
Basbox112
18 jaar geleden
 
0 +1 -0 -1
hij zet het code toch in de $_SESSION ??? Dan kun je input van de gebruiker daar vervolgens weer mee vergelijken...
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
ja.


17 jaar geleden
 
0 +1 -0 -1
Ik heb dit script in de file img.php gezet. Nu vind ik de volgende eigenaardigheid i.c.m. de firefox browser. Als ik het plaatje in firefox laad en daarna op de backbutton druk, daarna 2 sec wacht (i.v.m. radomizer), en daarna weer op de forward button druk, krijg ik hetzelfde plaatje te zien.
Met de Live HTTP Headers extension kan ik zien dat firefox het plaatje wel degelijk opnieuw opvraagt, alleen hij toont precies hetzelfde plaatje.
Dit zelfde probleem doet zich niet voor in IE.


17 jaar geleden
 
0 +1 -0 -1
Leuk script, werkt ook wel, maar hoe maak ik dan een redirect naar mijn echte pagina?
Pieter van Linschoten
Pieter van Linschoten
17 jaar geleden
 
0 +1 -0 -1
Hmm, Php 4 op mijn Server werkt imagerotate niet :s
wat kan ik daar aan doen? :s
Bram Z
Bram Z
17 jaar geleden
 
0 +1 -0 -1
gd2 installeren
Pieter van Linschoten
Pieter van Linschoten
17 jaar geleden
 
0 +1 -0 -1
Hmm... werkt al :p
had niet goed begrepen hoe het precies in z'n werk ging


17 jaar geleden
 
0 +1 -0 -1
Bij mij weigert die de session te pakken

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php

//hier start de session
session_start();

//hier zegen we tegen de browser dat het om een afbeelding
header("Content-type: image/jpeg");

//deze functie begin je de afbeelding
$img = @imagecreate(100,20);

// Met deze functie stel je een kleur waarden in 255 is geen van alle kleuren en 0 is alle kleuren bij elkaar
// door voor de grafische mensen onder ons is 255 de nul waarden


$bg = imagecolorallocate($img, 230, 230, 230);
$txt = imagecolorallocate($img, 0, 0, 0);

// hier beginnen we met een random getal te genereren
// ik denk dat srand en rand wel bekend zijn bij de meeste mensen
// maar voor mensen die het niet weten leg ik het toch effe uit
// met srand stel je een seed in voor de rand
// ik gebruik hier time maar je kan ook gewoon alles gebruiken


$seed = time();
$seed = srand($seed);

//met md5 kan je heel een heel mooie code met cijfers en letters genereren
$rand = md5(rand());

//zoals je nu ziet gebruik ik nu date dat is om een andere seed te genereren
$seed2 = date("zs");
$seed2 = srand($seed2);
$start = rand(0,22);

// zoals je mischien al ziet gebruik ik deze random van een willekeurige plek uit de
// 32 karakters lange code een code te plukken van maar 10 karakters lang

$code = substr($rand,$start,8);

// ik sla het op in een sessie zodat je het in een andere script kan vergelijken
// met de echte code en de input van de gebruiker bijv in een if statement

$_SESSION['code'] = $code;

//en hiermee plak je de code op het plaatje
imagestring($img, 10, 5, 2,  $_SESSION['code'], $txt);

// hier begint het anti bot truukje
// de nieuwere bots die worden gebruikt bij brute force aanvallen
// die kunnen tekens herken die ze scannen van het plaatje af
// daarom gaan wij het plaatje omdraaien zodat ze niet meer horizontaal te lezen zijn

//random hoef ik niet te vertellen

$angle_choice = date("sz");
$angle_choice = srand($angle_choice);
$angle_choice = rand(1,2);

//dit is eigenlijk een verkorte versie van een if statement ik conroleer de output van
// de random hierboven hier gebeurt ook de selectie of hij cw of ccw draait

$angle_choice = ($angle_choice == 1)?"angle_neg" : "angle_pos";

//als het deze word draait hij cw
$angle_neg = rand(-10,-3);
//alls het deze word draait hij ccw
$angle_pos = rand(10,3);

//deze functie draait de bron afbeelding om in de hoek die opgegeven is en plakt die
// in een nieuwe afbeelding

$rotate = imagerotate($img,$$angle_choice,$bg);

//nu maken we van onze code een output
imagejpeg($rotate);

//en nu vernietigen we het plaatje
imagedestroy($rotate);
imagedestroy($img);
?>


Bij login gebruik ik:

<input type="text" name="verificatie" maxlength="8" size=17 class="formstyle2">

Ik heb een debug bij login erop gezet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    $ver
            = $_POST['verificatie'];
    if($ver != $_SESSION['code']) {
    echo "Sessie verificatie: {$_SESSION['code']}<br>";
    echo "Gepost verificatie: $ver<br>";
    $msgnum = 2;
    }

?>


Ik krijg dus steeds de geposte verificatie wel..maar de sessie niet...($msgnum = een array waarin de berichten staan)

Kan iemand me helpen?
- -
- -
16 jaar geleden
 
0 +1 -0 -1
Mmm

Fatal error: Call to undefined function: imagerotate()

Bij mij werkt imagerotate ook niet :( En ik kan ook niet zomaar ff wat op de server installeren, want ik beheer dat ding niet. En in de PHPinfo staat dat GD versie 2 of hoger is, dus daar kan het niet aan liggen.

edit: Ik heb nu dit stuk weggehaald:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$angle_choice
= date("sz");
$angle_choice = srand($angle_choice);
$angle_choice = rand(1,2);
$angle_choice = ($angle_choice == 1)?"angle_neg" : "angle_pos";
$angle_neg = rand(-7,-2);
$angle_pos = rand(7,2);
$rotate = imagerotate($img,$$angle_choice,$bg);

?>


Maar dan krijg je dit als output:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
JFIF>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222d" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?=J{uLSD|A1<:MW*o\i #|e1o cz{lVi:\GG$.PK=_\Z_Sg_6G BQT$=[gNjZ} rSf`<dg|qqxoYMF+e]| 9jUK(t j4.DY_Mg-d- h>."XH!4\}f#c(zo 0m%hw0QI"u,>MN-?!rdu<:g?DAi=NsFDzpvUug`j~?i"ecn9*7criH#`ipV&n|cg><@4,_D&?!\ F!qvQEQEQEQEQEQEQEQE


Lijkt me niet helemaal de bedoeling...

edit2: Mmm, ik was vergeten een imagetag te maken en daarin img.php te dumpen :P
Roderik Roderik
Roderik Roderik
15 jaar geleden
 
0 +1 -0 -1
misschien is voorbeeld handig
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Hans Q
Hans Q
15 jaar geleden
 
0 +1 -0 -1
bij mij komt de variable $code niet door...
mn formulier werkt dus niet.

als ik als test

echo $code;

zeg laat hij alleen "$code" op de pagina zien...

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. gd2-key-generator

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.