Contact formulier - captcha kan worden onderschept

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Pagina: 1 2 volgende »

Guido  -

Guido -

14/09/2023 21:22:57
Quote Anchor link
Hallo,

Ik heb een contact formulier met een eenvoudige som-captcha (5+6=) waarbij de cijfers random zijn, op basis van mt_rand(). De uitkomst vd som zit ook als verborgen (hidden) veld in hetzelfde formulier, zodat mijn script kan vergelijken of bezoeker de juiste uitkomst heeft ingevuld. Uiteraard heb ik deze waarde gecodeerd erin staan, middels base64_encode(). Werkt prima.

Echter werd ik erop gewezen dat kwaadwillenden dit eenvoudig kunnen omzeilen, door de HTTP request te onderscheppen nadat op verzenden is gedrukt. Deze request bevat (oa) de ingetypte uitkomst én de gecodeerde uitkomst, en als die overeenkomen kan deze kwaadwillende eindeloos formulier inzendingen doen.

Hoe is dit op te lossen? Ik zou ipv een verborgen veld een sessie kunnen starten, maar is er ook een andere (eenvoudige) oplossing?

Groeten, Guido
 
PHP hulp

PHP hulp

05/11/2024 15:40:28
 
- Ariën  -
Beheerder

- Ariën -

14/09/2023 21:52:10
Quote Anchor link
Waarom gebruik je geen ReCaptcha?
Veel handiger en je hoeft geen invoervelden te maken die weer onnodig zijn.
 
Guido  -

Guido -

14/09/2023 22:01:30
Quote Anchor link
Wil niet afhankelijk zijn van een derde partij.

Guido
 
- Ariën  -
Beheerder

- Ariën -

14/09/2023 22:21:50
Quote Anchor link
Je zou ook met sessies wat kunnen doen. Dat lijkt mij het simpelst.

Maar wat houdt je tegen om ReCaptcha te gebruiken?
 
Guido  -

Guido -

14/09/2023 22:31:25
Quote Anchor link
Betreft een WordPress plugin en ik wil gebruiker niet dwingen om iets van Google of andere partij te gebruiken.

Wat sessie betreft, ooit gelezen dat je de variabele die je in een cookie zet ook vrij eenvoudig kunt achterhalen?

Guido
 
Jan R

Jan R

15/09/2023 07:57:58
Quote Anchor link
Guido - op 14/09/2023 22:01:30:
Wil niet afhankelijk zijn van een derde partij.

Guido

héél goed :)



Je moet het dan ook niet in koekjes zetten.
$_SESSION['verwachtresultaat'] = $mijnberekening;
volstaat.
meer info https://www.w3schools.com/php/php_sessions.asp

Ikzelf gebruik ook een tekstvraag met een berekening. Niet altijd een optelling.
verder checkbox welke moet en/of niet mag aangevinkt zijn.
 

15/09/2023 09:47:25
Quote Anchor link
Wat fijn dat er meer mensen zijn die snappen dat Google niet ieders vriend is.

Wat betreft de vraag. Je kunt het beste HTTP verkeer versleutelen tot HTTPS, om de 'attack vector' te verkleinen. Test je site met https://internet.nl of het voldoet aan de hedendaagse standaarden.

En sessies zijn de meest voor de hand liggende oplossing. Maak daarbij gebruik van de kennis van OWASP.
 
Guido  -

Guido -

15/09/2023 13:42:00
Quote Anchor link
Bedankt voor jullie reacties. Heb enige ervaring met gebruik van sessies dus kom daar vast wel uit.

Bij voorkeur gebruik ik geen sessies omdat gebruiker sessies kan blokkeren. Maar ik ga ervan uit dat vele websites dan sowieso niet correct functioneren.

Guido
 
- Ariën  -
Beheerder

- Ariën -

15/09/2023 16:38:47
Quote Anchor link
Sessies gebruiken cookies. Ik denk dat niemand die blokkeert, maar hoogstens na afloop verwijdert bij het sluiten van de browser. Maar dat doe je niet bij het invullen van een formulier. Dus sessies kan je prima gebruiken.

Als je Google's recaptcha niet wilt gebruiken, dan begrijp ik dat. Maar er zit wel een mooi algoritme achter om spammers te weren. Ik wil geen marktetingpraatje houden, maar het aantal spammers was na correct gebruik van ReCatcha met 99% gedaald, en er zit CSRF-beveiliging in zodat requests enkel werken van je site, en niet vanaf een andere sites of bot(net) via bijv. cURL-scripts of Guzzle die een browser na willen doen.

CSRF-beveiliging is hoe je het ook effectief inbouwt altijd een must-have.
Gewijzigd op 15/09/2023 16:56:25 door - Ariën -
 

15/09/2023 22:23:14
Quote Anchor link
Guido - op 14/09/2023 22:31:25:
Wat sessie betreft, ooit gelezen dat je de variabele die je in een cookie zet ook vrij eenvoudig kunt achterhalen?

Je moet cookies dan ook instellen met het 'Secure' attribuut en het 'HttpOnly' attribuut. De eerste zorgt er voor dat een cookie alleen via HTTPS verstuurd wordt en de tweede dat JavaScript er niet bij kan.
 
Guido  -

Guido -

16/09/2023 14:40:15
Quote Anchor link
Ik start een sessie, gebruik $_SESSION["mijn-variabele"] en unset de sessie aan het eind van mijn script.
Dus ik stel zelf geen bepaalde cookie in. Hoe voeg ik dat secure en httponly dan toe?

Guido
 
Adoptive Solution

Adoptive Solution

16/09/2023 14:55:20
 
Guido  -

Guido -

16/09/2023 15:36:18
Quote Anchor link
Thanks, wist niet dat het zo eenvoudig was. In mijn geval geen secure want er zijn mogelijk gebruikers zonder HTTPS. Dus dan wordt het:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$httponly = true
session_set_cookie_params($httponly);
session_start();
 
- Ariën  -
Beheerder

- Ariën -

16/09/2023 15:49:39
Quote Anchor link
Waarom zou je geen HTTPS gebruiken?
 
Guido  -

Guido -

16/09/2023 15:51:49
Quote Anchor link
Betreft een WordPress plugin en ik weet niet of gebruiker een veilige of niet veilige verbinding heeft.
Ja, of ik moet een extra check doen op type verbinding?

Guido
 
- Ariën  -
Beheerder

- Ariën -

16/09/2023 16:29:06
Quote Anchor link
Dwing https af in .htaccess, of gebruik hsts in . htaccess.
 
Guido  -

Guido -

17/09/2023 01:19:05
Quote Anchor link
Kwam er vandaag achter dat WordPress het gebruik van sessies afwijst, dus ik ga het op een andere manier oplossen. WordPress gebruikt zogenaamde transients voor tijdelijke opslag van data.
Toch bedankt iedereen!

Guido
 

17/09/2023 12:56:45
Quote Anchor link
Guido - op 16/09/2023 15:36:18:
In mijn geval geen secure want er zijn mogelijk gebruikers zonder HTTPS.

Serieus? Het is 2023, HTTPS is de standaard anders word je site zo ongeveer geweigerd door moderne browsers. TLS-certificaten zijn zelfs gratis te krijgen via Let's Encrypt en te automatiseren via ACME.
Gebruikers anno nu zonder HTTPS zijn echte losers. Daar wil je je niet eens mee associëren.
 
Guido  -

Guido -

17/09/2023 16:16:54
Quote Anchor link
Daar gaat het niet om, de plugin kan door iemand zonder HTTPS geïnstalleerd worden en dat wil je ondersteunen. Daarom niets forceren.

Guido
 
- Ariën  -
Beheerder

- Ariën -

17/09/2023 16:27:16
Quote Anchor link
Juist HTTPS forceren dus.
 

18/09/2023 10:14:27
Quote Anchor link
Guido - op 17/09/2023 16:16:54:
Daar gaat het niet om, de plugin kan door iemand zonder HTTPS geïnstalleerd worden en dat wil je ondersteunen. Daarom niets forceren.

HTTP op intranet zou nog kunnen, maar dat is meestal niet waar je Wordpress voor gebruikt.
Met HTTP kan iedereen alles onderscheppen, je hoeft maar mee te kijken naar het netwerkverkeer via Wireshark of een andere tool.

TLS is gewoon een absolute randvoorwaarde, zonder versleuteling begin je niets tegen onderscheppen door derden.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.