Cloudflare Turnstile WordPressiin: pelkkä widget ei pysäytä bottia

|Kirjoittaja: QUASAn toimitus|4 min lukuaika| 1
Cloudflare Turnstile WordPressiin: pelkkä widget ei pysäytä bottia

Cloudflare Turnstile suojaa WordPress-lomaketta vasta, kun selainwidgetin tuottama token tarkistetaan palvelimella ennen lähetyksen hyväksymistä. Cloudflaren Siteverify-ohje edellyttää tätä tarkistusta, koska lomakkeen käsittelijälle voi lähettää pyynnön suoraan widgetiä käyttämättä. Pelkkä näkyvä haaste ei siis ratkaise, hyväksyykö palvelin botin lähetyksen.

Asennuksessa on kaksi osaa: luo Turnstile-avaimet ja valitse WordPressissä suojattavat lomakkeet, sitten testaa, että lomakkeen käsittelijä hylkää puuttuvan tai virheellisen tokenin. Lisäosan asetussivun API-testi kertoo, toimivatko avaimet ja yhteys testissä. Se ei yksin osoita, että jokainen lomakkeen todellinen lähetys kulkee saman tarkistuksen kautta.

Luo avaimet oikealle verkkotunnukselle

Luo Cloudflaren hallinnassa Turnstile-widget ja määritä sille verkkotunnus, jolla WordPress-lomakkeita käytetään. Saat julkisen site key -avaimen widgetin näyttämiseen sekä salaisen secret key -avaimen tokenin palvelinpuoliseen tarkistukseen. Cloudflaren käyttöönotto-ohje erottaa nämä tehtävät ja kertoo, että Turnstilea voi käyttää myös sivustolla, jonka liikenne ei kulje Cloudflaren välityspalvelun kautta.

Pidä salainen avain WordPressin ja palvelimen asetuksissa; sitä ei pidä lähettää selaimeen. Tarkista widgetin hostname-asetuksista sivuston todellinen osoite: juuridomain, www-osoite ja mahdollinen erillinen lomakkeen aliverkkotunnus kannattaa käydä läpi sen mukaan, missä lomake avataan. Jos kehitys- tai testiympäristössä on oma osoite, erillinen widget ja avainpari helpottavat tuotantoliikenteen pitämistä erillään kokeista.

Ota suojaus käyttöön valituissa WordPress-lomakkeissa

WordPressin valituissa kirjautumis- ja yhteydenottolomakkeissa on Turnstile-suojaus; valitsematon kommenttilomake jää ennalleen.

Yksi valmis toteutustapa on Simple CAPTCHA with Cloudflare Turnstile -lisäosa. Sen WordPress-lisäosasivu neuvoo aktivoimaan lisäosan, syöttämään avaimet kohdassa Settings > Cloudflare Turnstile, valitsemaan lomakkeet, tallentamaan asetukset ja suorittamaan TEST API RESPONSE -testin. Tuettuihin lomakkeisiin kuuluvat WordPressin kirjautuminen ja kommentointi sekä esimerkiksi Contact Form 7 ja WPForms.

Valitse asetuksista vain käytössä olevat lomakkeet. Avaa sen jälkeen jokainen valittu lomake myös kirjautumattomana, sillä ylläpitäjän oma näkymä ei välttämättä vastaa tavallisen kävijän näkymää. Testaa kirjautuminen, kommentointi ja yhteydenotto erikseen, jos suojaat ne kaikki: sama asetusvalinta ei kerro, että erilliset lähetyspolut toimivat samalla tavalla.

Jos lomake on tehty omalla koodilla tai lisäosan tukemattomalla integraatiolla, pelkkä lisäosan asennus ei lisää sille tarkistusta. Tällöin widget ja Siteverify-kutsu on liitettävä juuri siihen palvelinkäsittelijään, joka tallentaa viestin, julkaisee kommentin tai hyväksyy kirjautumisen. Varmista myös, ettei lomakkeen vaihtoehtoinen lähetysreitti ohita samaa ehtoa.

Anna palvelimen päättää lähetyksen hyväksynnästä

Lomakkeen mukana kulkeva cf-turnstile-response-kenttä sisältää tokenin tavallisessa Turnstile-toteutuksessa. Käsittelijä lähettää Siteverify-rajapintaan POST-pyynnön, jossa secret on salainen avain ja response on selaimelta tullut token. Varsinainen lomaketoiminto tehdään vasta, kun rajapinnan vastaus ilmoittaa tarkistuksen onnistuneen.

Puuttuva token, kielteinen vastaus ja epäonnistunut yhteys rajapintaan ovat kaikki hylkäysperusteita suojatulle lähetykselle. Virheilmoituksen näyttäminen selaimessa ei korvaa päätöstä palvelimella: suoraan lähettävä ohjelma ei tarvitse sivun painiketta eikä suorita selaimen koodia. Siksi toiminnan pitää pysähtyä ennen kuin esimerkiksi viesti lähtee tai kommentti tallentuu.

Siteverify palauttaa onnistuneen tarkistuksen yhteydessä myös hostname-arvon, joka kuvaa haastetta palvellutta osoitetta. Jos hyväksyt lähetykset vain tietyltä osoitteelta, vertaa arvoa palvelimen odottamaan hostnameen ja hylkää poikkeama, vaikka token olisi muuten kelvollinen. Widgetin sallittujen verkkotunnusten asetus ja tämä palvelimen oma vertailu ovat eri tarkistuksia; älä oleta lisäosan tekevän jälkimmäistä ilman toteutuksen tarkistamista.

Token kelpaa vain yhteen tarkistukseen ja vanhenee viidessä minuutissa. Jos lomake on auki pitkään tai lähetys epäonnistuu tarkistuksen jälkeen, kävijä tarvitsee uuden tokenin ennen uutta yritystä. Uudelleen käytetyn tokenin hyväksyminen olisi merkki siitä, että kyseinen lähetyspolku ei tee vaadittua tarkistusta.

Testaa sekä läpipääsy että ohitusyritykset

WordPress-lomakkeen testilähetys ilman Turnstile-tokenia pysähtyy ennen viestin käsittelyä.

Testaa suojattuja lomakkeita hallitussa testiympäristössä ja tarkista tulos palvelimen toiminnosta, ei vain selaimen ilmoituksesta. Yhteydenottolomakkeessa ratkaisevaa on, lähtikö viesti; kommenttilomakkeessa, tallentuiko kommentti. Onnistunut tavallinen lähetys on lähtötaso, jonka jälkeen hylkäystestit paljastavat puuttuvan tarkistuksen.

  1. Lähetä lomake tuoreella tokenilla. Varmista, että tarkoitettu toiminto onnistuu eikä suojaus estä tavallista kävijää.
  2. Poista testipyynnöstä cf-turnstile-response-kenttä tai lähetä pyyntö suoraan käsittelijälle. Lähetyksen pitää päättyä ilman lomakkeen varsinaista toimintoa.
  3. Lähetä sama token uudelleen. Uuden yrityksen pitää epäonnistua, koska jo tarkistettua tokenia ei voi käyttää toistamiseen.
  4. Jos oma koodi vertailee hostname-arvoa, tee testi kahdella samalle widgetille sallitulla osoitteella. Hanki token toiselta osoitteelta ja lähetä se lomakkeelle, joka odottaa toista; paikallisen vertailun pitää estää lähetys. Tämä testi koskee erillistä hostname-ehtoa, eikä lisäosan toiminnasta pidä tehdä oletusta ilman tarkistusta.

Tarkista välimuisti ja JavaScriptin viivästys

Avaa lomake tavallisen kävijän tapaan välimuistitetulta sivulta sekä ympäristössä, jossa välimuisti ohitetaan. Tarkista, että widget latautuu, lähetykseen tulee tuore token ja epäonnistuneen yrityksen jälkeen lomakkeen voi lähettää uudella tokenilla. Tee sama myös ponnahdusikkunassa tai ilman sivun uudelleenlatausta toimivassa lomakkeessa, jos sivusto käyttää niitä.

Jos widget ei näy tai palaudu lähetysvirheen jälkeen, ota JavaScriptin viivästys tilapäisesti pois käytöstä ja kokeile samaa lomaketta uudelleen. Jos tulos muuttuu, käy optimointiasetukset läpi yksi kerrallaan ja testaa lopullinen yhdistelmä uudelleen. Palvelimen hylkäystestit kuuluvat samaan käyttöönottoon, vaikka widget näkyisi oikein välimuistitetulla sivulla.

Lue myös:

Jaa:

Tilaa uutiskirjeemme

Saat tuoreimmat Web3-, tekoäly- ja kryptouutiset suoraan sähköpostiisi.

0