[PHP] Zabezpieczenie obrazkowe

0

witam ...

na stronie http://vegopl.ovh.org/Pliki/Kod/test.php

mam kod :

<html>
<head>
</head>
<body>
<table border="1">
<tr><td>
<?php
	echo "<img src=\"".rand(0, 9).".gif\">";
	echo "<img src=\"".rand(0, 9).".gif\">";
	echo "<img src=\"".rand(0, 9).".gif\">";
	echo "<img src=\"".rand(0, 9).".gif\">";
	echo "<img src=\"".rand(0, 9).".gif\">";
?></td><td>
	<form>
		<input type="text" name="kod" size="10" maxlength="5"/> Wpisz kod z obrazka!

	</td></tr>
	<tr>
		<td><input type="submit" value="wyslij" /></td><td><input type="reset" value="wyczysc" /></td>
		</tr>
	</form>
	</table>
</body>
</html>

jak sprwadzac czy wartosc wpisana w form. jest poprawna z zawartoscia obrazka?

0

No chyba slabo, bo z tego co widze to generujesz losowy kod, ale nigdzie go nie przechowujesz. Poza tym, jakbys troche sie postaral to bys znalazl to (tu akurat obrazek jest generowany na podstawie czasu) -> http://4programmers.net/PHP/Zabezpieczenia_formularzy_-_metoda_z_hasłem_na_obrazku

0

Ymm odnasząc sie do tego kodu, to mozna zrobić tak

<html>
<head>
</head>
<body>
<table border="1">
<tr><td>
<?php
 session_start();
 if (isset($_POST['kod'])){
if($_POST['kod']== $_SESSION['kod'])
echo "Poprawny kod"; 
 else echo "Zły kod";
 exit;
}

$random =  rand(10000, 99999);
 $_SESSION['kod'] = $random;
$kod = str_split($random);
foreach (str_split(rand(10000, 99999) ) as $wartosc) {
        echo "<img src=\"".$wartosc.".gif\">"; 
		}
 
?></td><td>
        <form action="?" method="post">
                <input type="text" name="kod" size="10" maxlength="5"/> Wpisz kod z obrazka!

        </td></tr>
        <tr>
                <td><input type="submit" value="wyslij" /></td><td><input type="reset" value="wyczysc" /></td>
                </tr>
        </form>
        </table>
</body>
</html>

Ale.... nie warto go używać :d lepiej generować cały obrazek, tak jak na przykładzie http://4programmers.net/PHP/Zabezpieczenia_formularzy_-_metoda_z_has%C5%82em_na_obrazku

0

No chyba slabo, bo z tego co widze to generujesz losowy kod, ale nigdzie go nie przechowujesz. Poza tym, jakbys troche sie postaral to bys znalazl to (tu akurat obrazek jest generowany na podstawie czasu) -> http://4programmers.net/PHP/Za[...]_-_metoda_z_hasłem_na_obrazku00, OK, 00, 00

wiem ze trzeba wylosowane liczby gdzies przechowac to pierwsze, drugie jest to ze tamten artykul tez czytalem i czytalem tez inne wyszukane w googlach. Gdybym nie czytal to bym nie pisal! ( chce tez dodac ze wiem co to manual wiec nie odsylajcie mnie tam ) i to chcialem na poczatku wyjasnic.

a teraz przejde do tego co chce sie dowiedziec
Hmm jaka jest roznica w bezpieczenstwie gdy obrazek jest generowany jako jeden a jaka gdyby kod sklada sie z kilku obrazkow ?

0

zrobilem cos takiego i to niby dziala. pozniej kod:

<html>
	<head>
	</head>
	<body>
		<table border="1">
			<tr><td>
<?php

session_start();
	if (isset($_POST['kod'])){
		if($_POST['kod']== $_SESSION['kod'])
			echo "Poprawny kod ";
		else 
			echo "Zły kod";
			exit;
		}
		
	$pierwsza = rand(0,9);
	$druga = rand(0,9);
	$trzecia = rand(0,9);
	$czwarta = rand(0,9);
	$piata = rand(0,9);
	
	$_SESSION['kod'] = "$pierwsza$druga$trzecia$czwarta$piata";
	
	echo "<img src=\"".$pierwsza.".gif\">";
	echo "<img src=\"".$druga.".gif\">";
	echo "<img src=\"".$trzecia.".gif\">";
	echo "<img src=\"".$czwarta.".gif\">";
	echo "<img src=\"".$piata.".gif\">";
?>

</td><td>
<form action="test.php" method="post">
		<input type="text" name="kod" size="10" maxlength="5"/> Wpisz kod z obrazka!

	</td></tr>
	<tr>
		<td><input type="submit" value="wyslij" /></td><td><input type="reset" value="wyczysc" /></td>
		</tr>
	</form>
	</table>
</body>
</html>

no i niby dziala, mozna to sprawdzic tutaj:
http://vegopl.ovh.org/Pliki/Kod/test.php


ale czy ktos z bardziej obcykanych moze powiedziec czy to jest w ogole bezpieczne?
0

to ma byc zabezpieczenie?! spambot na podstawie analizy nazw plikow z obrazkami bedzie potrafil sobie odtworzyc ten ciag cyfr.
realnie nie ma dobrego zabezpieczenia obrazkowego. kazde dostepne dla ciebie zabezpieczenie mozna latwo zlamac.

0
Poczatkujacy9999 napisał(a)
ale czy ktos z bardziej obcykanych moze powiedziec czy to jest w ogole bezpieczne?

nie jest ani trochę - wiesz co to i po co jest captcha? :D.

Dużo lepszym rozwiązaniem, którego ot-taki-sobie-generic-bot do spamowania stronek nie złamie, jest rozwiązanie użyte na 4programmers - wyłącz sobie javascript i spróbuj napisać odpowiedź do tematu.

Kod, który podałeś można złamać w ogóle nie pobierając obrazków z serwera...

edit: wide, ze Karolaq mnie ubiegł, pozwolę sobie jednak sprostować - bez przesady, są dobre zabezpieczenia obrazkowe (oczywiście zależy jak dobrego zabezpieczenia oczekujemy), np. http://sam.zoy.org/pwntcha/ - Cwazymail. Poza tym owszem, każde zabezpieczenie można złamać, ale nie każde łatwo ;)

0

to zamiast tych obrazkow lepiej generowac obrazek z wylosowana liczba?

0

@tomkiewicz: one nie sa dobre takze. sa tylko troche trudniejsze do zlamania.

@Poczatkujacy9999: czy lepiej... moze poczytaj sobie http://pornel.net/captcha
powinno ci to troche naswietlic sprawe.

0

według takiego rozumowania, żadne zabezpieczenie nie jest dobre, każde różni się tylko poziomem trudności - stąd mój komentarz w nawiasie. Z drugiej strony każde zabezpieczenie, którego nie opłaca się łamać jest dobre

0

do tych co podales mozna znalezc w necie gotowe biblioteki, wiec nawet mocno sie nie trzeba meczyc.
nie no, sa calkiem dobre zabiezpieczenia: http://4programmers.net/Forum/399440#id399440
tylko, ze nie wszedzie mozna je zastosowac. niektore sa ciezkie w realizacji, no ale za to takze ciezki w zlamaniu.

0

ekhm, nie wiem czy zauważyłeś, podałem stronę na której są głównie najgorsze captche ;). Wskazałem jednak jedną z lepszych - Cwazymail, polecam ctrl+F i ctrl+V. Gotowa biblioteka wystarczy?

owszem taki sblam w wielu (większości?) zastosowań jest dobry (z definicji nieopłacalności), ale jak piszą na samej stronie sblama - "Jeśli nie (...) naprawdę wielkiego serwisu (...)". Tyle, że do takich zastosowań jak "moja pierwsza stronka w php", a nawet poważniejszych imho wystarcza (pewnie do czasu) takie zabezpieczenie jak jest na 4p.

0

A to będzie dobre? :D
user image

0
tomkiewicz napisał(a)

ekhm, nie wiem czy zauważyłeś, podałem stronę na której są głównie najgorsze captche ;). Wskazałem jednak jedną z lepszych - Cwazymail, polecam ctrl+F i ctrl+V. Gotowa biblioteka wystarczy?

owszem taki sblam w wielu (większości?) zastosowań jest dobry (z definicji nieopłacalności), ale jak piszą na samej stronie sblama - "Jeśli nie (...) naprawdę wielkiego serwisu (...)". Tyle, że do takich zastosowań jak "moja pierwsza stronka w php", a nawet poważniejszych imho wystarcza (pewnie do czasu) takie zabezpieczenie jak jest na 4p.
sorry, zobaczylem na stronie kilka obrazkow i nawet nie wnikalem. myslalem, ze to mial byc te dobre przyklady [wstyd]

0

Ja zrobiłem tak, ze zamiast przepisywania liczb to daje proste działanie matematyczne, takie jak np 4+2 lub 2*2 itp. Albo tez można zrobić co widzisz, np dać zamiast losowanych liczb słonia lub żyrafę i kazać użytkownikowi go nazwać.
Captchs też może być też ochroną przed botami, ale także przed lamerami :D
user image
Moje jest podobne, ale nie az do takiego stopnia :D

Ale co to botów. Na mojej starej stronie 100% odwiedzających to boty i jak na razie żaden nie umiał przepisać z strony
http://4programmers.net/PHP/FAQ/Zabezpieczenie_formularza_v2 . Jak widać użytkownik nie zamierza otworzyć poważnego portalu na 200 tys odwiedzin dziennie np.

http://4programmers.net/PHP/FAQ/Zabezpieczenie_formularza_v2
http://4programmers.net/PHP/Zabezpieczenia_formularzy_-_metoda_z_has%C5%82em_na_obrazku

Spokojnie mu to starczy :p

1 użytkowników online, w tym zalogowanych: 0, gości: 1