Spam via aanroepen php mail script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ernest Cartigny

Ernest Cartigny

27/10/2022 09:40:16
Quote Anchor link
Tot een maand geleden kon ik via een paar regels in het script dat gegevens uit een formulier naar ons toe mailt voorkomen dat dit gebeurde van buiten de website.

//zorgen dat script niet van buiten de website wordt aangeroepen
$vorige_url = getenv("HTTP_REFERER");
IF ($vorige_url != "https://www.granietshop.nl/werkbladen/graniet/prijzen.htm"){
echo "Niet toegestaan, stuur ons een e-mail";
exit;}

Door een upgrade van de PHP versie werkte dit niet meer dus heb ik het bovenstaande deel uit het script gehaald, gevolg, het lijkt erop dat het script van elders aangeroepen wordt, ik krijg mails met oningevulde formulieren.

Hoe kan ik ervoor zorgen dat het script weer alleen vanuit de eigen website aangeroepen kan worden?
 
PHP hulp

PHP hulp

03/02/2023 13:58:02
 
Ivo P

Ivo P

27/10/2022 09:54:43
Quote Anchor link
werkt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $vorige_url = $_SERVER['HTTP_REFERER']; ?>


nog wel?
(overiges kun je als "robot" die url ook zelf meesturen: dan is de check verder nutteloos)
 
- Ariën  -
Beheerder

- Ariën -

27/10/2022 10:02:36
Quote Anchor link
Een CSRF-aanval dus. Je zou ook met sessies kunnen controleren of het formulier vanaf dezelfde site wordt uitgevoerd.

$_SERVER['HTTP_REFERER'] is overigens eenvoudig te faken.

Of als all-in-one oplossing kiezen voor ReCaptcha 3 Invisible. Deze heeft geen rare puzzels of checkboxen, werkt op zichtbaar logo na vrijwel onzichtbaar, waarna die op de achtergrond een waarde meegeeft. Ook zit hier CSRF-beveiliging in.
Gewijzigd op 27/10/2022 10:03:34 door - Ariën -
 
Lucas Kindt

Lucas Kindt

27/10/2022 10:03:09
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$_SERVER['HTTP_REFERER']
zou ik niet gebruiken. Je kan beter een sessie variabele zetten. Overigens werkt HTTP_REFERER niet over HTTPS..

Pagina 1:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$_SESSION['pagina1'] = TRUE;

pagina 2:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
if(isset($_SESSION['pagina1'] && $_SESSION['pagina1'])
{
    //PAGINA 1 IS BEZOCHT
}
else
{
    //PAGINA 1 IS NIET BEZOCHT
}

En als je wilt dat ze niet steeds refreshen dan zou ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
unset($_SESSION['pagina1'])
doen in de if else.
Gewijzigd op 27/10/2022 10:09:06 door Lucas Kindt
 
Ernest Cartigny

Ernest Cartigny

27/10/2022 10:09:54
Quote Anchor link
Als ik het script deel erin zet komt er altijd de foutmelding "niet toegestaan......
Toen dat deel nog werkte had ik geen last van lege formulieren die gemaild werden, het lijkt erop dat het gewoon grapjassen zijn, niet geautomatiseerd (dan zou ik ook meer "spam" verwachten)

De gegevens worden op een html pagina ingevuld, de spam komt echter van het mail-to script (alleen de veld namen, onderwerp e.d.)

Ik begreep al dat "http_referer" niet meer de juiste manier was om te werken maar de site is al vanaf 2018 in de basis niet meer gewijzigd. De site moet eigenlijk helemaal op de schop maar gezien de afhankelijkheid van de site durven we dat niet aan.

Ik ga kijken of ik met de session variabele wat kan doen.
 
- Ariën  -
Beheerder

- Ariën -

27/10/2022 10:22:10
Quote Anchor link
Als de spammers Selenium gebruiken geef ik grote kans dat je met sessies niks gaat verhelpen.

Gaat het om buitenlandse spam?
 
Ernest Cartigny

Ernest Cartigny

27/10/2022 10:29:44
Quote Anchor link
Arën, het zijn lege formulieren, dus totaal geen gegevens. Ik zou dus ook niet weten waar de spam vandaan komt?
 
Lucas Kindt

Lucas Kindt

27/10/2022 10:47:49
Quote Anchor link
Check of de gegevens ingevuld/geldig zijn voordat ze het kunnen versturen.
 
- Ariën  -
Beheerder

- Ariën -

27/10/2022 10:48:05
Quote Anchor link
Je kan tijdens het onderzoek kijken naar de herkomst van IP-adressen. Contact-formulieren zijn al jaren een bron van spam-berichten. Ikzelf heb als maatregel maar ReCaptcha V2 ingebouwd die het een jaar volhield, totdat ze spammers de checkbox-knop konden indrukken. Daarna heb ik ReCaptcha 3 geïnstalleerd die tot op heden alles tegenhoudt, terwijl mijn script momenteel nog vaak wordt aangevallen. Het blijft een kat-en-muis spel, maar tot nu toe sla ik de muizen af voor mijn koelkast.

Misschien moet ik alle spammers maar even in mijn firewall van mijn server gooien :P

Maar als je een contactformulier hebt. Zorg dat je ook geen header-injection toestaat. Contactformulieren zijn ook de bron van spamruns...
Gewijzigd op 27/10/2022 10:52:31 door - Ariën -
 



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.