2010-04-30 5 views
0

im en utilisant ce qui suit pour nous envoyer un formulaire de contact, iv regardé dans la sécurité et seulement trouvé que vous devez protéger le bit De: de la fonction mail, comme ive hardcoded cela signifie le script est anti-spam/non-détournablephp Formulaire d'e-mail désinfection

$tenantname = $_POST['tenan']; 
$tenancyaddress = $_POST['tenancy']; 
$alternativename = $_POST['alternativ']; 
//and a few more 
//then striptags on each variable 

$to = "[email protected]"; 
$subject = "hardcoded subject here"; 
$message = "$tenantname etc rest of posted data"; 
$from = "[email protected]"; 
$headers = "From: $from"; 

mail($to,$subject,$message,$headers); 
+0

Je crois que vous voulez dire que vous devez protéger la fonction "To: bit de la fonction mail", puisque c'est ce que vous avez réellement codé en dur. –

Répondre

2

Unjackable? Oui.

Anti-spam? Je ne le décrirais pas comme ça, car le formulaire peut toujours être utilisé pour spammer la cible du formulaire.

0

Si vous utilisez des données de formulaire pour créer $from (pas tout à fait sûr de votre code), $from pourrait être utilisé pour ajouter des en-têtes supplémentaires (BCC/CC), un peu comme l'injection SQL.

Mise à jour: Maintenant, avec le code un peu plus lisible, je me rends compte que cela ne devrait pas être un problème pour vous.

+0

Son appelé injection crlf («\ r \ n») et son rien comme injection de SQL. – rook

+0

Je dirais que c'est similaire, car comme l'injection SQL, vous pouvez mettre fin à la 'déclaration' actuelle (dans ce cas, un en-tête), et ajouter des 'commandes' supplémentaires (dans ce cas, des en-têtes). (devrait être?) bien connu des développeurs PHP (plus que l'injection crlf), cela semblait être un bon moyen de l'expliquer. –

0

Il y a quelques considérations $headers ne doit jamais être contrôlé par un attaquant. S'ils peuvent contrôler cette variable, ils peuvent injecter un crlf \r\n et transformer ce forum en une passerelle de spam ouverte. PHP-Nuke était vulnérable à cela il y a un certain temps.

La deuxième considération est la limitation de débit. Un bot bête va à ce forum quelques milliers de fois. Ils pourraient même ne pas spammer, mais juste balayer votre site pour l'injection de sql pour entrer. Vous devriez utiliser reCapthca pour empêcher des robots de soumettre ce forum.