WebSite X5Help Center

 
Michele G.
Michele G.
User

Sostituire il "captcha" che propone il programma.  it

Autor: Michele G.
Besucht 250, Followers 2, Geteilt 0  

Buongiorno alla community.

Per una migliore leggibilità del captcha generato dal programma, vorrei cambiarlo con uno più facilmente leggibile come quello proposto da KolAsim in un altro post.

@KolAsim: ho inserito il tuo codice captcha in un template di prova utilizzando il tab "esperto" nelle proprietà della pagina ma il codice si visualizza all'esterno della homepage e non all'interno del modulo "contatti" (vedere allegato) anche se comunque funziona perfettamente.

Essendoci nel template una sola pagina (la home) non riesco a capire in quale altra proprietà di pagina si possa inserire.

La prova che ho fatto è visibile qui.

Grazie.

Gepostet am
9 ANTWORTEN - 2 NüTZLICH
Giancarlo B.
Giancarlo B.
User

Ciao Michele, non ho seguito tutto il discorso, comunque guardando il tuo link forse il codice lo hai inserito nella sezione sbagliata, non ho il codice per testarlo ma prova ad inserirlo in un oggetto HTML.

Secondo, non so se hai provato, ma hai pensato al qcaptcha di google?

Ciao

Mehr lesen
Gepostet am von Giancarlo B.
Giancarlo B.
Giancarlo B.
User

come alternativa vedi se ti è utile questo, ciao

Mehr lesen
Gepostet am von Giancarlo B.
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator
Nutzer des Monats IT
Michele G.
... ... ... @KolAsim: ho inserito il tuo codice captcha in un template di prova utilizzando il tab "esperto" nelle proprietà della pagina ma il codice si visualizza all'esterno della homepage e non all'interno del modulo "contatti" (vedere allegato) anche se comunque funziona perfettamente.... ... ... 
  Ciao, … come promesso sono tornato nel tuo nuovo topic personale...
… Ho visto la tua pagina: avevi fatto tutto bene, solo che la struttura non combacia con il mio codice...
… adesso ho appena rivisto il codice per renderlo più facilmente fruibile, conglobando tutte le ricorrenze diverse in un’unica routine, con una sola variabile da dichiarare in modo semplice, una sola volta all’inizio del codice.
… Quello che devi fare tu, che richiede un minimo di praticità e attenzione, consiste nell’individuare l’ID del form mail da dichiarare. …per la tua pagina in questione si tratta di quello nel corpo della pagina, che attualmente ha questo ID(*):
#imObjectForm_7_form
… Il codice, così com’è, non è adatto per un mail-form nell’header, perché quest’ultimo ha una struttura fissa e non è contemplato nel mio attuale codice, che ho sviluppato sei-sette anni fa. Quindi il form nell’header puoi lasciarlo per altri scopi, se ti interessa, ma non verrà considerato dal mio codice...
… Quello che devi fare adesso è eliminare tutto il mio codice extra da dove lo avevi inserito precedentemente...
… Il mio nuovo codice va inserito in:
>> Passo 3 > Proprietà della pagina > Esperto > Codice personalizzato > terza opzione > Prima della chiusura del tag /head...
...(...In alternativa, se lo ritieni più comodo, puoi incollarlo in un oggetto Codice HTML, anche di 1 px, nella stessa pagina che contiene il form...)...
… Nel codice puoi personalizzare facilmente l’ID nella prima variabile dichiarata, ben visibile; se vuoi, puoi anche modificare l’immagine di contrasto e l’icona per il reload, entrambe facilmente individuabili nel codice.
… Queste immagini attualmente hanno un URL assoluto prelevato da una fonte online…
... Se le scarichi e le alleghi al progetto, utilizzando poi un URL relativo, sarebbe ancora meglio, ed in questo caso se vuoi chiarimenti, avvisami...
… Come al solito, il codice si applicherà con un semplice copia-incolla nel punto indicato…
… seguirà il codice …
.
.

Mehr lesen
Gepostet am von  ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator
Nutzer des Monats IT

... + + ... (*) ... si rileva con il destro del mouse > ispeziona:

.

Mehr lesen
Gepostet am von  ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator
Nutzer des Monats IT

... ecco il codice, ... nulla da invidiare ai metodi noti, concetto semplice, in chiaro e non assorbe risorse, meno di 5KB; ...se servono chiarimenti, avvisami ... ciao e buon lavoro:

<script>
/** captcha extra x WSx5 by KolAsim **/
$(window).on("load", function() { /*K*/
const contenitoreK = "#imObjectForm_7_form"; /* ID del modulo FORM-MAIL*/
/*--K--*/
const invioOrigK = contenitoreK + ' input[type="button"]'; /* ID pulsante INVIO del modulo */ /*--K--*/ const style = ` <style> ${invioOrigK} { display: none; } #captchaWrapper{text-align:center;} .inline { position:relative ; font-size:32px;padding:0px} .inline img:hover { rotate: 90deg; } .inline img:active { transform: scale(0.9); filter: drop-shadow(0 0 3px black); transition: filter 0s; rotate: 180deg; } #submit { width:150px; font-size:24px; } #btn { width:150px; font-size:24px; color: aqua; background-color: brown; } #sfondo { position:relative; width:200px; height:60px; margin-left:50%; left:-100px; overflow:hidden; text-align:center; } #contenitore { position:absolute; top:0px; display:flex; width:200px; height:55px; background-repeat:no-repeat; background-size:cover; background-position:center center; } #contenitoreIMG { position:relative; top:-75px; border: 1px solid #333; width:200px; height:200px;
/*--K--*/
background-image: url("https://cdn.pixabay.com/photo/2016/05/27/09/18/background-1419306_640.jpg");
/*--K--*/
background-repeat:no-repeat; background-size:200px 200px; background-position:center center; filter: blur(1px); } .box { width:50px; height:50px; display:flex; align-items:center; justify-content:center; font-size:50px; text-shadow: -2px -2px 5px white, 2px 2px 5px black; font-weight:bold; font-family:times; } #fakeRecaptcha { margin:auto; width:260px; border:1px solid #ccc; padding:10px; font-family:Arial; background:#f9f9f9; margin-bottomXX:10px; } #recaptchaBox { align-items:center; gap:10px; } #checkRobot { width:20px; height:20px; } #loadingBox { margin-top:10px; font-size:14px; color:#555; display:none; } </style> `; $("head").append(style); /*--K--*/ const html = ` <div id="captchaWrapper"> <div id="fakeRecaptcha"> <div id="recaptchaBox"> <input type="checkbox" id="checkRobot"> <label for="checkRobot">Non sono un robot</label> </div> <p id="key"></p> <div id="sfondo"> <div id="contenitoreIMG"></div> <div id="contenitore"></div> </div> <div id="user-input" class="inline"> <input type="text" id="submit" placeholder="Captcha" /> </div> <div class="inline">
<!-- >>> -->
<img class="reloadK" src="https://www.iconpacks.net/icons/2/free-icon-convert-3215.png" title="Reload Captcha">
<!-- <<< -->
</div> <input type="button" id="btn" value="INVIO" /> <div id="loadingBox">Verifica in corso...</div> </div> </div> `; $(contenitoreK).parent().append(html); /*--K--*/ let uniquechar = ""; let captchaAttivo = false; function generate() { $("#contenitore").html(""); $(".inline").fadeOut(300).fadeIn(300); $("#submit").val(""); uniquechar = ""; const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (let i = 0; i < 4; i++) { uniquechar += chars.charAt(Math.floor(Math.random() * chars.length)); } $("#contenitore").attr("title", uniquechar); setTimeout(() => { uniquechar.split("").forEach(c => { $("#contenitore").append(`<div class="box">${c}</div>`); }); const colori = ["Red","Orange","Yellow","Green","Blue","Violet","Indigo"]; $(".box").each(function () { $(this).css({ transform: `rotate(${Math.random()*60-30}deg)`, color: colori[Math.floor(Math.random()*colori.length)] }); }); $("#contenitoreIMG").css("transform", `rotate(${Math.random()*360}deg)`); }, 1000); } function verifica() { if (!captchaAttivo) { $("#key").html("Conferma prima di non essere un robot"); return; } if ($("#submit").val() === uniquechar) { $("#key").html("Captcha accettato"); $( invioOrigK).click(); } else { $("#key").html("Captcha NON accettato!"); } } /*--K--*/ $(document).on("click", "#btn, #verifica", verifica); $(document).on("click", ".reloadK", generate); $(document).on("change", "#checkRobot", function () { if (this.checked) { $("#loadingBox").show().text("Verifica in corso..."); setTimeout(() => { $("#loadingBox").text("Verifica completata ✔"); captchaAttivo = true; generate(); }, 1200); } else { captchaAttivo = false; $("#loadingBox").hide(); $("#contenitore").html(""); } }); /*--K--*/ $(document).on("keydown", "form", function (e) { if (e.key === "Enter") { e.preventDefault(); return false; } }); /*--K--*/ setTimeout (function(){ $(".inline img").click() },500); /**K**/ });
</script>  

-------------------------

.

Mehr lesen
Gepostet am von  ‪ KolAsim ‪ ‪
Roberto M.
Roberto M.
User

Negli ultimi giorni ho visto diversi utenti condividere soluzioni CAPTCHA personalizzate per WebSite X5. Sono tutti lavori interessanti, ognuno con il proprio stile e approccio, e questo è sicuramente un valore per la community.

Detto questo, ci tengo a fare una riflessione tecnica generale, perché molti codici – pur funzionando visivamente – condividono alcune caratteristiche comuni:

Punti positivi ricorrenti che ho notato:

  • il captcha si vede e funziona graficamente
  • la generazione casuale è corretta
  • l’integrazione con WSX5 è fatta bene
  • il pulsante di invio viene gestito correttamente
  • gli effetti grafici sono piacevoli

Fin qui tutto ok.

Ma c’è un punto fondamentale: i CAPTCHA lato client potrebbero presentare dei problemi.

E questo comporta inevitabilmente alcuni limiti:

  • il codice può essere letto da un bot
  • può essere bypassato
  • può essere forzato
  • non offre una protezione reale

Un bot, per esempio, può leggere il contenuto del DOM e ottenere il codice senza alcuna difficoltà. Questo non dipende da chi scrive il codice: è proprio un limite strutturale del lato client. Un esempio?

document.querySelector("#contenitore").title ....

E ha già il codice. Fine della sicurezza.

Detto questo, ci sono differenze importanti tra i vari approcci.

Alcuni codici tendono a mescolare:

  • CSS + HTML + JS in un’unica stringa
  • blocchi da decine di KB difficili da manutenere
  • animazioni non standard
  • click simulati
  • pulsanti nascosti tramite CSS iniettato via JS
  • agganci al form un po’ “creativi”

Altri invece presentano:

  • CSS ordinato e leggibile
  • HTML pulito e strutturato
  • JS modulare
  • nessun hack strano
  • nessun comportamento imprevedibile
  • gestione del pulsante tramite classi CSS
  • approccio più stabile e professionale

La differenza si vede, anche se entrambi restano comunque CAPTCHA lato client.

Si può fare di più? Sì.

Per chi vuole una protezione più forte, esiste un approccio più robusto:

✔ Honeypot invisibile + Token criptato

Questo sistema:

  • non espone il codice reale nel DOM
  • non permette ai bot di leggerlo
  • non può essere bypassato con un semplice script
  • aggiunge un livello di sicurezza reale
  • resta compatibile con WebSite X5
  • non richiede server esterni o servizi terzi
  • codificato in base64 o anche hash SHA‑256 invece del base
  • non riconoscibile
  • non interpretabile senza conoscerne la logica

Non è un CAPTCHA “militare”, ma è decisamente più rompiscatole di altri.

Conclusione

Tutte le soluzioni condivise finora sono utili e mostrano creatività. Ma è importante distinguere tra:

  • captcha visivi (funzionano, ma sono aggirabili)
  • captcha strutturati (più puliti e manutenibili)
  • captcha con protezione rinforzata (honeypot + token criptato)

Il confronto tra i vari metodi ci ha incuriosito e ci ha spinto a lavorare su una soluzione più robusta, integrabile anche nei codici già esistenti. Stiamo sviluppando un sistema basato su tecniche come honeypot invisibile, token criptato e temporizzazione dei tentativi con blocco automatico, che riduce drasticamente la possibilità di bypass da parte dei bot e aumenta la sicurezza complessiva del modulo.

Il codice è già disponibile gratuitamente nella nostra pagina contatti tramite ispezione della pagina raggiungibile dal nostro profilo ma attenzione: ne il nostro ne il codice di altri utenti può fare qualcosa contro un bot programmato apposta per un singolo sito. 

Questo tipo di bot:

  • viene scritto da uno sviluppatore
  • analizza il vostro JavaScript
  • capisce come funziona il token
  • capisce come funziona l’honeypot
  • replica la logica del CAPTCHA
  • invia la risposta corretta

È un attacco mirato con una grossa perdita di tempo e risorse per programmarlo. È come se qualcuno studiasse il tuo sito per ore e scrivesse un software su misura per superare il tuo CAPTCHA.

Ne vale la pena? Io penso di no! 

Purtroppo X5 non ha BackEnd ma se lo avesse avuto.....

  • il codice reale sarebbe sul server
  • il bot non potrebbe leggerlo
  • non potrebbe replicarlo
  • non potrebbe bypassarlo
  • non potrebbe simulare la verifica
  • non potrebbe ignorare il limite tentativi
  • non potrebbe ignorare il blocco IP

In pratica: un altro pianeta.

Mehr lesen
Gepostet am von Roberto M.
Roberto M.
Roberto M.
User

Se decidete di utilizzarlo dovete modificare il vostro ID del pulsante SEND del modulo contatti e inserirlo al posto di quello che trovate sul codice originale esattamente come dice la guida di Giancarlo WEB che vi consiglio di vedere. 

Mehr lesen
Gepostet am von Roberto M.
Roberto M.
Roberto M.
User

Vi viene così ▼

Mehr lesen
Gepostet am von Roberto M.