Repository 32bit  Forum
Repository 64bit  Wiki

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.

php - captcha matematico :)

Messaggioda danix » sab set 20, 2008 23:58

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
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - captcha matematico :)

Messaggioda conraid » dom set 21, 2008 8:43

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
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda aschenaz » dom set 21, 2008 13:59

Ma, più o meno, non è il sistema che ti suggerivo io?
viewtopic.php?f=20&t=25001&p=205381#p205381
:)
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4423
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.16
Desktop: KDE 4.10.5

Re: php - captcha matematico :)

Messaggioda danix » dom set 21, 2008 15:17

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... :)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - captcha matematico :)

Messaggioda danix » mar set 23, 2008 17:07

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...
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - captcha matematico :)

Messaggioda conraid » mar set 23, 2008 17:24

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
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda danix » mar set 23, 2008 18:55

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...
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - captcha matematico :)

Messaggioda aschenaz » mar set 23, 2008 20:38

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.
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4423
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.16
Desktop: KDE 4.10.5

Re: php - captcha matematico :)

Messaggioda danix » mar set 23, 2008 22:33

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...
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - captcha matematico :)

Messaggioda conraid » mer set 24, 2008 9:10

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: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda conraid » mer set 24, 2008 9:17

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: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda conraid » mer set 24, 2008 10:07

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
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda targzeta » ven ott 10, 2008 7:27

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6168
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: php - captcha matematico :)

Messaggioda danix » ven ott 10, 2008 8:16

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
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: php - captcha matematico :)

Messaggioda targzeta » ven ott 10, 2008 12:03

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6168
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti