Mail script beveiligen
Hieronder mijn script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if(isset($_POST['send'])){
if($_SESSION['time'] > (time()-60)){
echo 'Je mag 1 mail per minuut sturen!';
}elseif($_POST['email'] != '' || $_POST['cap'] != $_SESSION['captcha']){
echo 'Er ging iets fout!';
}else{
echo 'De mail is gestuurd!';
$_SESSION['time'] = time();
mail("[email protected]", $_POST['onderwerp'], $_POST['bericht']);
}
}
echo '<form method="post">
<input type="hidden" name="email">
Onderwerp: <input type="text" name="onderwerp"> <br>
Bericht: <input type="text" name="message"> <br>
<img src="captcha.php"> <input type="text" name="cap"> <br>
Verstuur: <input type="submit" name="send">
</form>';
?>
if(isset($_POST['send'])){
if($_SESSION['time'] > (time()-60)){
echo 'Je mag 1 mail per minuut sturen!';
}elseif($_POST['email'] != '' || $_POST['cap'] != $_SESSION['captcha']){
echo 'Er ging iets fout!';
}else{
echo 'De mail is gestuurd!';
$_SESSION['time'] = time();
mail("[email protected]", $_POST['onderwerp'], $_POST['bericht']);
}
}
echo '<form method="post">
<input type="hidden" name="email">
Onderwerp: <input type="text" name="onderwerp"> <br>
Bericht: <input type="text" name="message"> <br>
<img src="captcha.php"> <input type="text" name="cap"> <br>
Verstuur: <input type="submit" name="send">
</form>';
?>
Info: Ik maak geen gebruik van een inlog systeem. Hierdoor kan je dus je cookie/sessie verwijderen waardoor de timer niet meer werkt.
Is dit goed beveiligd?
En hoe kan dit beter?
Gewijzigd op 09/01/2013 10:28:11 door Tom aan t Goor
Captcha is een goede oplossing..
Waar komen $onderwerp en $bericht vandaan?
Ik maak nu ook gebruik van captcha zie regel 5 en 17
Toevoeging op 09/01/2013 10:28:52:
- Aar - op 09/01/2013 10:26:09:
Waar komen $onderwerp en $bericht vandaan?
Sorry, dit was fout gegaan met delen knippen voor het topic.
Zie dat er ook nergens word gecheckt op de captcha.. Wie weet word het form wel vanaf een andere pagina verstuurd waar de captcha niet op staat :-)
@mebus, zie regel 5, maar idd..je moet wel kijken of de $_POST['cap'] wel verstuurd wordt.
Mebus Hackintosh op 09/01/2013 10:31:31:
Zie dat er ook nergens word gecheckt op de captcha.. Wie weet word het form wel vanaf een andere pagina verstuurd waar de captcha niet op staat :-)
In regel 5 wordt gecontroleerd of dit overeenkomt met wat er in de session staat.
Sorry, ik zie het :-) Als je nog steeds veel spam krijgt kan je misschien bijhouden hoevaak het formulier vanaf een bepaald ip adres word verstuurd? Dus 1 keer per 5 minuten per ip adres.
Mebus Hackintosh op 09/01/2013 10:44:07:
Sorry, ik zie het :-) Als je nog steeds veel spam krijgt kan je misschien bijhouden hoevaak het formulier vanaf een bepaald ip adres word verstuurd? Dus 1 keer per 5 minuten per ip adres.
Wat is de beste manier hiervoor?
Bijhouden in een database?
@Danny daar maakt ie dus al gebruik van...