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.

Re: php - captcha matematico :)

Messaggioda conraid » sab ott 11, 2008 20:11

Spina prova il math antispam con generazione random del codice

Per esempio prova qui
http://www.dabliutri.net/2005/10/24/chi ... di-google/
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11987
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda targzeta » sab ott 11, 2008 20:31

achenaz ha scritto:...
Ma come dicevamo prima, l'importante è non essere presi di mira...


Si, è quello che si diceva con conraid. Però non capisco una cosa, entrambi usate i cookie...dopo. Allora tanto vale usarli anche prima per dare delle rogne in più.
Mi spiego, il tuo antispam aschenaz è meglio di quello di conraid se venisse usato con i cookie (per gestire una sessione intendo). Infatti, anche se il problema è sempre lo stesso, hai un insieme di risposte, quindi hai una funzione quanto meno iniettiva tra l'insieme delle domande e quello delle risposte. Questo di per se è già un punto debole, vuol dire allora che se io uomo faccio una prova corretta, scopro già un elemento dell'insieme domande ed uno dell'insieme risposte. Quindi ho già fregato il tuo antispam poichè appunto, la funzione, per definizione, alla stessa domanda associa la stessa risposta. Quello che puoi fare con i cookie, è non far sapere a me utente l'elemento dell'insieme domanda. Cioé, visto che non hai una sessione, sei costretto ad inserire:
Codice: Seleziona tutto
<em>Quale animale &egrave; contenuto nella parola <strong>granaio</strong>?</em>
            <input type="hidden" name="antispam" id="antispam" value="8" />
ovvero domanda: 'antispam=8', risposta:'rana'. Se avessi uno stato, tu potresti semplicemente avere un codice sorgente di questo tipo:
Codice: Seleziona tutto
<em>Quale animale &egrave; contenuto nella parola <strong>granaio</strong>?
ovvero solo la risposta:"rana". Questo perchè lo script controllore può sapere qual'è la domanda, non c'è bisogno che glielo dica il form.
E' vero che io conosco un elemento dell'insieme risposte, nel senso che io so che esiste una domanda nel tuo database la cui risposta è "rana", però non conosco a priori qual'è la domanda che mi hai fatto, quindi posso anche tentare mandando al controllore sempre "rana", ma se il tuo database è vasto è la funzione che preleva le domande è una buona funione random, allora io ti manderò un messaggio corretto su tantissimi. Questo implica, sempre nell'ottica dell'uso della sessione, che tu puoi anche bannarmi dopo un tot di tentativi falliti.

La mia domanda alla fine è:"perchè usate i cookie dopo, e non li usate quando servono?" Molto probabilmente la rosposta è:"perchè io uso una cosa che non ho implementato io :)".

L'uso dei cookie diminuisce l'accessibilità, evidentemente, ma è anche vero che al giorno d'oggi tutti i browser possono accettare i cookie, e tutti i browser sono impostati di default ad accettare i cookie.

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: 6149
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 targzeta » sab ott 11, 2008 20:36

conraid ha scritto:Spina prova il math antispam con generazione random del codice

Per esempio prova qui
http://www.dabliutri.net/2005/10/24/chi ... di-google/

Questo me lo devi spiegare, non ho provato, ma se è come penso io allora potrebbe esserci un errore di fondo. Che vuol dire con generazione random della chiave? Vuoi dire che cambi dinamicamente l'insieme delle risposte? Cioè, alla domanda "due+nove" la risposta, che tu dai in chiave hash, cambia di volta in volta? Cioè, se io apro il form ora e trovo la domanda:"due+nove" ho nel campo nascosco la risposta "5867s" ad esempio, se la faccio dopo, allora non ho più "5867s" ma un altra? E, soprattutto "5867s" non funziona più?

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: 6149
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 conraid » sab ott 11, 2008 20:41

spina ha scritto:
conraid ha scritto:Spina prova il math antispam con generazione random del codice

Per esempio prova qui
http://www.dabliutri.net/2005/10/24/chi ... di-google/

Questo me lo devi spiegare, non ho provato, ma se è come penso io allora potrebbe esserci un errore di fondo. Che vuol dire con generazione random della chiave? Vuoi dire che cambi dinamicamente l'insieme delle risposte? Cioè, alla domanda "due+nove" la risposta, che tu dai in chiave hash, cambia di volta in volta? Cioè, se io apro il form ora e trovo la domanda:"due+nove" ho nel campo nascosco la risposta "5867s" ad esempio, se la faccio dopo, allora non ho più "5867s" ma un altra? E, soprattutto "5867s" non funziona più?

Spina


Sì, dovrebbe essere così.
In pratica quel valore lo ricava tramite una stringa di caratteri, che il programmatore del plugin consiglia di modificare, altrimenti tutti quelli che usano quel plugin avrebbero gli stessi valori.
Ora visto che è fissa, ho provato a generarla random, quindi ogni volta cambia la chiave con cui viene generato l'hash, cioè quel valore che vedi nel form.
Non so se funziona, nel senso che non mi sono messo a vedere se a somma uguale corrisponde hash diverso ogni volta, perché ho provato a cambiare l'array dei numeri, ma ne prende sempre 10, penso in quanto dia la precendenza a quello dell'interfaccia di amministrazione (per capirsi quello dove puoi modificare la corrispondenza 1=>uno, etc... )

Però in teoria dovrebbe cambiare.
Il dubbio iniziale che avevo è "ma se fa il controllo con quella stringa ogni commento non lo accetta", invece il commento normale lo prende, quindi la mia risposta è "credo di sì" :-)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11987
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda conraid » sab ott 11, 2008 20:44

C'è un problema.
Il primo commento non lo prende mai... mmm...
devo controllare in quale istante viene generato l'insieme degli hash

p.s.
sto facendo prove tanto non commenta quasi mai nessuno :-)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11987
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda targzeta » sab ott 11, 2008 20:50

Anche se con questo tipo di protezione dovrebbe essere impossibile ricevere spam, l'errore di fondo che potresti aver commesso (e quando dico potresti, intendo dire che chi ha progettato il plugin potrebbe non aver considerato che tu lo usi così), è la concorrenza. Se dieci persone aprono il tuo form contemporaneamente allora l'insieme delle risposte è per tutti lo stesso. Se poi uno di loro esegue una risposta, allora l'insieme delle risposte è cambiato e i rimanenti nove form portano con loro una risposta sbagliata.
L'idea è carina, ma andrebbe implementata, e non so se chi ha scritto il plugin ha previsto conraid e i suoi colpi di genio :)

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: 6149
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 conraid » sab ott 11, 2008 20:59

spina ha scritto:Anche se con questo tipo di protezione dovrebbe essere impossibile ricevere spam, l'errore di fondo che potresti aver commesso (e quando dico potresti, intendo dire che chi ha progettato il plugin potrebbe non aver considerato che tu lo usi così), è la concorrenza. Se dieci persone aprono il tuo form contemporaneamente allora l'insieme delle risposte è per tutti lo stesso. Se poi uno di loro esegue una risposta, allora l'insieme delle risposte è cambiato e i rimanenti nove form portano con loro una risposta sbagliata.
L'idea è carina, ma andrebbe implementata, e non so se chi ha scritto il plugin ha previsto conraid e i suoi colpi di genio :)

Spina


Oltre a questo c'è anche il problema che il primo commento non funziona.
Domani rimetto la versione originale, anche in slackers mi sa che tolgo il captcha e rimetto questo, che il suo lavoro lo fa.
Se un giorno mi prenderanno di mira metterò il captcha :-)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11987
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda targzeta » sab ott 11, 2008 21:08

Bhé caro conraid, come in tutte le cose io penso che l'importante sia la consapevolezza. Io parlo parlo ma alla fine nel sito che gestisco metterò davvero:"inserisci 12" :). Anche perchè la soluzione ottimale, come abbiamo visto non c'è...o, almeno per me, difficile da implementare, visto che non so come creare un immagine al volo con PHP. L'uso della sessione rende più difficile il compito ad un soggetto malizioso che ti ha preso di mira, ma l'antispam(-bot) va più che bene per i nostri sitini :). Però se non altro ci siamo fatti una bella chiaccherata ed abbiamo capito qualche cosa in più.

Notte :D (no more coffee),
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: 6149
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 conraid » sab ott 11, 2008 21:11

spina ha scritto:Bhé caro conraid, come in tutte le cose io penso che l'importante sia la consapevolezza. Io parlo parlo ma alla fine nel sito che gestisco metterò davvero:"inserisci 12" :). Anche perchè la soluzione ottimale, come abbiamo visto non c'è...o, almeno per me, difficile da implementare, visto che non so come creare un immagine al volo con PHP. L'uso della sessione rende più difficile il compito ad un soggetto malizioso che ti ha preso di mira, ma l'antispam(-bot) va più che bene per i nostri sitini :). Però se non altro ci siamo fatti una bella chiaccherata ed abbiamo capito qualche cosa in più.

Notte :D (no more coffee),
Spina


notte :-)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11987
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: php - captcha matematico :)

Messaggioda danix » dom ott 12, 2008 10:09

spina io l'immagine dinamica con php l'ho creata e il numero era salvato in una sessione, trovi il codice in quest'altro topic, ma siccome è molto confuso se ti serve ti posso postare la parte "interessante"... :)
Per inciso, quella funzione è l'insieme di 2 o tre funzioni che ho trovato in giro per il web, tra l'altro anche sul sito del php ci sono indicazioni su come creare immagini al volo... ;)


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 aschenaz » dom ott 12, 2008 20:00

spina ha scritto:...Quello che puoi fare con i cookie, è non far sapere a me utente l'elemento dell'insieme domanda. Cioé, visto che non hai una sessione, sei costretto ad inserire:
Codice: Seleziona tutto
<em>Quale animale &egrave; contenuto nella parola <strong>granaio</strong>?</em>
            <input type="hidden" name="antispam" id="antispam" value="8" />
ovvero domanda: 'antispam=8', risposta:'rana'. Se avessi uno stato, tu potresti semplicemente avere un codice sorgente di questo tipo:
Codice: Seleziona tutto
<em>Quale animale &egrave; contenuto nella parola <strong>granaio</strong>?
ovvero solo la risposta:"rana". Questo perchè lo script controllore può sapere qual'è la domanda, non c'è bisogno che glielo dica il form.
E' vero che io conosco un elemento dell'insieme risposte, nel senso che io so che esiste una domanda nel tuo database la cui risposta è "rana", però non conosco a priori qual'è la domanda che mi hai fatto, quindi posso anche tentare mandando al controllore sempre "rana", ma se il tuo database è vasto è la funzione che preleva le domande è una buona funione random, allora io ti manderò un messaggio corretto su tantissimi. Questo implica, sempre nell'ottica dell'uso della sessione, che tu puoi anche bannarmi dopo un tot di tentativi falliti.

Si, ma non bisogna perdere di vista anche il fatto che una persona
dev'essere messa in grado di capire la risposta... In ogni caso, io
passo il valore dell'id del record solo per brevità: come dicevo
prima, si può passare anche solo la domanda e poi imposto la
query sulla corrispondenza domanda-risposta...
La mia domanda alla fine è:"perchè usate i cookie dopo, e non li usate quando servono?" Molto probabilmente la rosposta è:"perchè io uso una cosa che non ho implementato io :)".

Nein! :) Io uso solo codice che ho scritto io carattere per carattere.
Ma questo non per presunzione: semplicemente perché con le
pappe pronte non imparo nulla. Il cookie di solito non lo metto
affatto; l'ho messo qui solo per renderti la cosa meno facile! :p
L'uso dei cookie diminuisce l'accessibilità, evidentemente, ma è anche vero che al giorno d'oggi tutti i browser possono accettare i cookie, e tutti i browser sono impostati di default ad accettare i cookie.

Comunque sia, ho fatto delle modifiche ed ho raddoppiato
la sicurezza. Prova ora: http://aschenaz.netsons.org/contatti

Solo che c'è qualcosa che non va su Netsons (e quando mai!):
i messaggi mandati oggi pomeriggio mi sono arrivati stasera
(infatti mi sono scervellato non poco perché pensavo ci fosse
qualche errore... :evil: ).
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4417
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.5
Desktop: KDE 4.10.5

Re: php - captcha matematico :)

Messaggioda aschenaz » ven ott 17, 2008 10:34

aschenaz ha scritto:...Comunque sia, ho fatto delle modifiche ed ho raddoppiato
la sicurezza. Prova ora: http://aschenaz.netsons.org/contatti

@ spina: Fammi sapere se hai provato... :)
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4417
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.5
Desktop: KDE 4.10.5

Re: php - captcha matematico :)

Messaggioda targzeta » ven ott 17, 2008 13:40

aschenaz ha scritto:...@ spina: Fammi sapere se hai provato... :)
Ciao, quando torno a casa, se mi ricordo, ti spiego perchè non ho provato ;).

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: 6149
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 targzeta » sab ott 18, 2008 14:21

Ciao,
come mi ero ripromesso ti spiego perchè non ho provato. Voglio tuttavia dare un impostazione teorica, più che pratica, altrimenti qui non ci si leva le gambe :).

Partiamo da una considerazione iniziale: il nostro scopo è impedire un attacco di spamming al nostro sito. Un attacco diretto da una persona specifica che ha deciso di spammarci il sito attraverso il form che mettiamo a disposizione. Questo perchè per fermare uno spambot basta un semprice campo con su scritto:"Inserisci 12". Anzi, direi che per fermare uno spambot è meglio inserire questo campo piuttosto che usare un plugin esterno, perchè gli scrittori di spambot potrebbero usarlo per sapere che nel nostro sito è presente proprio questo tipo di protezione.

Quello che volevo spiegare, è che sotto queste condizioni, il non uso della sessione rende il nostro scopo impossibile. Ricordiamo che la sessione non implica per forza l'uso dei cookie, si potrebbe implementare la sessione anche attraverso il passaggio di una variabile 'sessione' come campo hidden di un form. Per sessione intendo dire che nel server c'è una sorta di 'stato' che caratterizza il client, ovvero, il server è a conoscenza della domanda che ha fatto al client, sia nella pagina del form, sia in quella in cui controlla la risposta.
Perchè è impossibile fermare questo tipo di attacco senza l'uso della sessione? Semplice, perchè se il server, nella pagina in cui controlla la risposta del client, non è a conoscenza della domanda che gli ha fatto, allora se la deve far dire dal client.
Il nostro controllore per forza di cose implementa una funzione, una funzione che collega l'insieme delle domande (D) all'insieme delle risposte (R). Una volta che l'attaccante è ha conoscenza di una coppia di elementi (d,r) allora può reinviare a volontà al controllore sempe questi due elementi. Il controllore non può far altro che prenderli come buoni, poichè ci applicherà sempre la stessa funzione.

Non so, spero sia chiaro,
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: 6149
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 conraid » sab ott 18, 2008 14:30

spina ha scritto:Quello che volevo spiegare, è che sotto queste condizioni, il non uso della sessione rende il nostro scopo impossibile. Ricordiamo che la sessione non implica per forza l'uso dei cookie, si potrebbe implementare la sessione anche attraverso il passaggio di una variabile 'sessione' come campo hidden di un form. Per sessione intendo dire che nel server c'è una sorta di 'stato' che caratterizza il client, ovvero, il server è a conoscenza della domanda che ha fatto al client, sia nella pagina del form, sia in quella in cui controlla la risposta.
Perchè è impossibile fermare questo tipo di attacco senza l'uso della sessione? Semplice, perchè se il server, nella pagina in cui controlla la risposta del client, non è a conoscenza della domanda che gli ha fatto, allora se la deve far dire dal client.


Infatti è quello che facevo l'altro plugin con il captcha visivo. Memorizza il valore in una sessione.
Ma nel mio sito non utilizzare un plugin è più complesso che usarlo, alla fine sarebbe meglio farsi un plugin tutto mi :-)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 11987
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Precedente

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite