php - captcha matematico :)

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

php - captcha matematico :)

Messaggio da danix »

Ciao a tutti,
finita l'estate ricomincio a rompere su php quà in programmazione ;)
questa volta tocca al captcha, ma siccome ho già risolto l'ultima volta con le immagini \:D/ volevo questa volta provare con la versione più accessibile di questo codice di sicurezza...
Una cosa simile a quella che si vede su slackers.it al momento di lasciare un commento, una domanda tipo "due + cinque" o qualcosa del genere...
Per farlo un minimo sicuro dovrò prevedere un po' di domande diverse, o dite che bastano poche domande "random"??
Sempre in tema di sicurezza pensavo di non mettere solo domande matematiche, che ne dite??
mi consigliereste una struttura tipo per la tabella di mysql?? Io avevo pensato a:

Codice: Seleziona tutto

id - domanda - risposta
1 - la somma di sette e cinque - 12
2 - il colore del cavallo bianco di napoleone - bianco
3 - ecc ecc - ecc
Che ne dite??


Come sempre, grazie in anticipo per i suggerimenti :D
ciau
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: php - captcha matematico :)

Messaggio da conraid »

danix85 ha scritto: Che ne dite??
Prendi un array di numeri ed ogni volta tiri fuori due numeri e li sommi. Se vuoi la visualizzazione delle somme fai un array tipo
1 => uno
2 => due
etc...

Poi ci possono essere miglioramenti, ma il concetto è quello
Non è il "non plus ultra" dei sistemi di protezione, ma da quando lo uso nei miei blog lo spam è molto diminuito.

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: php - captcha matematico :)

Messaggio da aschenaz »

Ma, più o meno, non è il sistema che ti suggerivo io?
viewtopic.php?f=20&t=25001&p=205381#p205381
:)

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: php - captcha matematico :)

Messaggio da danix »

aschenaz ha scritto:Ma, più o meno, non è il sistema che ti suggerivo io?
si si, infatti mi è venuto in mente proprio rileggendo quel famoso thread... ;)

adesso sto cercando di perfezionare il sito che stavo creando allora perchè a breve andrà messo in produzione... :)
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: php - captcha matematico :)

Messaggio da danix »

rieccomi... :)
@aschenaz:
quando hai un attimo, mi posti (se l'hai sottomano) qualche spunto riguardo il captcha testuale di cui mi parlavi nell'altro thread??

@tutti:
gironzolando per internet mi sono casualmente imbattuto in un post di un tizio che aveva pensato di creare un captcha che per funzionare non va riempito, cioè, ragionando come uno spambot, ha pensato che quest'ultimo va alla ricerca di tutti i campi di un form e inizia a riempirli di boiate, quindi ha escogitato di mettere un campo nascosto agli utenti convenzionali tramite css e di effettuare un controllo in fase di invio tramite la pagina che raccoglie i dati, se il campo nascosto è vuoto vuol dire che l'utente è umano, altrimenti vuol dire che è un bot... secondo chi ha scritto quest'articolo questo metodo stava dando i suoi frutti, voi che ne dite?? è un metodo valido o mi conviene continuare con dei captcha più classici??


Grazie mille per l'aiuto...
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: php - captcha matematico :)

Messaggio da conraid »

danix85 ha scritto: @tutti:
gironzolando per internet mi sono casualmente imbattuto in un post di un tizio che aveva pensato di creare un captcha che per funzionare non va riempito, cioè, ragionando come uno spambot, ha pensato che quest'ultimo va alla ricerca di tutti i campi di un form e inizia a riempirli di boiate, quindi ha escogitato di mettere un campo nascosto agli utenti convenzionali tramite css e di effettuare un controllo in fase di invio tramite la pagina che raccoglie i dati, se il campo nascosto è vuoto vuol dire che l'utente è umano, altrimenti vuol dire che è un bot... secondo chi ha scritto quest'articolo questo metodo stava dando i suoi frutti, voi che ne dite?? è un metodo valido o mi conviene continuare con dei captcha più classici??
sì, è una soluzione molto usata, anche alcuni plugin dei più popolari cms la usano.
Se il programma/spam fa un controllo con i css lo scopre subito.
Ogni soluzione ha i suoi pro ed i suoi contro. E puoi anche usarne più di una. Per esempio questa la puoi abbinare alle altre :-)

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: php - captcha matematico :)

Messaggio da danix »

andando un attimo ot (ma non troppo) :) ,
sto scrivendo il captcha testuale...
nella pagina che raccoglie i dati ho incluso la pagina delle variabili, in quest'ultima c'è un array così strutturato:

Codice: Seleziona tutto

$questions[0]['q']='Chi è il presidente degli USA?';
	$questions[0]['a'][0]='George W. Bush';
	$questions[0]['a'][1]='Bill Clinton';
	$questions[0]['a'][2]='Ronald Reagan';
	$questions[0]['a'][3]='Richard M. Nixon';
	$questions[0]['a'][4]='Jimmy Carter';
	$questions[1]['q']='Chi è il compagno di batman;
	$questions[1]['a'][0]='Robin';
	$questions[1]['a'][1]='The Joker';
	$questions[1]['a'][2]='Spiderman';
	$questions[1]['a'][3]='Batmobile';
	$questions[1]['a'][4]='George W. Bush';
La risposta corretta è sempre la 0 di ogni set come potete vedere...
nel form di contatto ho un campo nascosto che mi passa il set usato per la domanda con il metodo POST, in questo modo:

Codice: Seleziona tutto

<input type="hidden" name="qtu" value="0" />
e una serie di <option> con le varie risposte in ordine casuale che mi inviano il valore nel campo "code", ad esempio:

Codice: Seleziona tutto

<select name="code" id="code" tabindex="8">
<option value="1">risposta sbagliata1</option>
<option value="4">risposta sbagliata4</option>
<option value="0">risposta corretta</option>
<option value="3">risposta sbagliata3</option>
<option value="2">risposta sbagliata2</option>
Nella pagina di raccolta ho:

Codice: Seleziona tutto

$set=$_POST["qtu"]
if($_REQUEST["code"]!=0)
Questo if dovrebbe restituirmi vero se la risposta è esatta e falso se è sbagliata, eppure mi da sempre falso...
sapete dirmi cosa sto sbagliando??


grazie mille a tutti...
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: php - captcha matematico :)

Messaggio da aschenaz »

Credo perché con quel !=0 tu verifichi solo che il campo non sia false
(in senso booleano). Credo che dovresti usare !==0...

Il sistema che uso io è strutturato così: ho una tabella di mysql
con delle domande che presuppongono un minimo di intelligenza...

Codice: Seleziona tutto

ID        Domanda                                                               Risposta
------------------------------------------------------------------------------
1      Quale città è contenuta nella parola AROMA       Roma
2      Risolvi questo semplice rebus: BELL1                   Belluno
... (e così via)
Poi nel form mi richiamo in random un id della tabella e formulo la
domanda; nella pagina di raccolta dati lo script mi verifica che la
risposta sia esatta. Tutto qui. :)
Finora (ce l'ho su tre o quattro siti) non ho ricevuto un solo spam.

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: php - captcha matematico :)

Messaggio da danix »

aschenaz ha scritto:Credo perché con quel !=0 tu verifichi solo che il campo non sia false
(in senso booleano). Credo che dovresti usare !==0...

Il sistema che uso io è strutturato così: ho una tabella di mysql
con delle domande che presuppongono un minimo di intelligenza...

Codice: Seleziona tutto

ID        Domanda                                                               Risposta
------------------------------------------------------------------------------
1      Quale città è contenuta nella parola AROMA       Roma
2      Risolvi questo semplice rebus: BELL1                   Belluno
... (e così via)
Poi nel form mi richiamo in random un id della tabella e formulo la
domanda; nella pagina di raccolta dati lo script mi verifica che la
risposta sia esatta. Tutto qui. :)
Finora (ce l'ho su tre o quattro siti) non ho ricevuto un solo spam.
quasi nino... :D
mi hai aiutato molto, però oltre ad aggiungere un uguale ho dovuto anche mettere i doppi apici allo 0... altrimenti continuava a leggermelo come valore booleano...

Grazie...
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: php - captcha matematico :)

Messaggio da conraid »

A me funziona anche così

form.php

Codice: Seleziona tutto

<?php
if($_REQUEST["code"]!=0) {
	echo 'risposta sbagliata';
} else {
	echo 'risposta esatta';
}
?>
form.html

Codice: Seleziona tutto

<form action="form.php">
  <select name="code" id="code" tabindex="8">
<option value="1">risposta sbagliata1</option>
<option value="4">risposta sbagliata4</option>
<option value="0">risposta corretta</option>
<option value="3">risposta sbagliata3</option>
<option value="2">risposta sbagliata2</option>
<input type="submit" />
</form>
ed anche cambiando i valori :-k

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: php - captcha matematico :)

Messaggio da conraid »

danix85 ha scritto: però oltre ad aggiungere un uguale ho dovuto anche mettere i doppi apici allo 0... altrimenti continuava a leggermelo come valore booleano...
Questo perché più che booleano te lo vede come stringa

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: php - captcha matematico :)

Messaggio da conraid »

Guarda l'evoluzione dell'antispam matematico :-)

http://www.codegravity.com/projects/mathguard

Secondo me stiamo esagerando, ho fatto fatica a capirlo appena trovato in un sito

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: php - captcha matematico :)

Messaggio da targzeta »

Scusate, io ci ho riflettuto un attimo perchè vorrei implementare un captcha per il sito che sto portando avanti. Secondo le mie riflessioni notturne (dovute al caffé...che non essendo abituato a bere, mi fà strani effetti, tipo l'insonnia) un captcha non ha senso se non si usa una sessione. Anzi, sempre secondo le mie riflessioni notturne, senza la sessione non ha proprio senso implementare un captcha.
Prima di spremere ancora di più il mio cervello nel tentativo di formalizzare questa mia teoria, potete dirmi se la pensiamo tutti allo stesso modo (ovvero se ho scoperto l'acqua calda)? Oppure qualcuno di voi usa un captcha senza fare uso della sessione?

Grazie anticipatamente,
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: php - captcha matematico :)

Messaggio da danix »

imho dipende dal captcha...
un semplice captcha come quello per cui ho chiesto aiuto in questo thread non ha bisogno della sessione, se invece vuoi un'immagine jpeg dinamica creata al volo da php come era in origine per tutti i captcha allora credo che la sessione diventi necessaria...

PS
come te anche io non bevo caffè, quindi prendi questa mia risposta con le dovute valutazioni, sopratutto in merito all'orario a cui te la sto postando... l'acqua fredda è ottima per svegliarsi, ma a me non fa troppo effetto... :D
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: php - captcha matematico :)

Messaggio da targzeta »

Bhé, tutto è relativo, in questo caso dipende da cosa intendiamo noi essere un captcha. Se il captcha lo intendiamo come un test che ci aiuta a stabilire se l'utente è un computer o un essere umano, allora a mio avviso un captcha senza sessione non è un captcha :).
Il motivo è semplice, se non si ha una sessione, allora il software (in questo caso lo script) che effettua il controllo non può sapere nulla sulla domanda richiesta all'utente, a meno che la domanda non sia fissa, oppure abbia una risposta fissa. Questo ci porta a due conclusioni:
  • la domanda e la risposta gli vengono passate entrambe dall'utente
  • la risposta che gli viene passata dall'utente è sempre la stessa
in entrambi i casi un utente può istruire un computer per passare il test, convieni con me?

Invece mi interessa molto il captcha che consiste nel far creare un'immagine al volo da parte del PHP (è la stessa che ho pensato stanotte....quindi ho scoperto l'acqua calda), sapresti dirmi come implementare la creazione di un immagine al volo? Dovrei fare uso della libreria ImageMagick per php giusto? Mi sembra che tu abbia già utilizzato imagemagick da riga di comando per creare un immagine con all'interno del testo, giusto?

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi