2010-01-29 46 views
0

我有非常基本的PHP技能。现在,我试图“反向”工程师联系表格,我发现有一定程度的安全线(我真的不知道它有多好)。我想我明白了,它可以工作,但我只是想,也许你们中一些更多的经验可以浏览一下,看看它是否仍然安全。在保护简单的电子邮件联系表

正如我所说,我扭转了它,所以我不知道我是否破坏了安全性,但它确实工作得很好。正如你可以看到它非常基本。我一直在阅读很多东西,并了解所有的事情,只是担心订购和冗余(如果有必要,要避免它)......基本上我可以做的任何事情来尽可能清理它。下面

代码:

<?php 
      $to='[email protected]'; 
      $sender=stripslashes($_POST['sender']); 
      $email=stripslashes($_POST['email']); 
      $subject=stripslashes($_POST['subject']); 
      $message=stripslashes($_POST['message']); 
      $body= "Greetings,\n\n$message\n\n$sender" . 
        "\n" ; 

      $displayForm=true; 
      if ($_POST){ 
       $sender=($_POST['sender']); 
       $email=($_POST['email']); 
       $subject=($_POST['subject']); 
       $message=($_POST['message']); 
       $valid=eregi('^([0-9a-z]+[-._+&])*[0-9a-z][email protected]([-0-9a-z]+[.])+[a-z]{2,6}$',$email); 
       $crack=eregi("(\r|\n)(to:|from:|cc:|bcc:)",$sender); 
       $crack=eregi("(\r|\n)(to:|from:|cc:|bcc:)",$message); 
        if ($sender && $email && $message && $valid && !$crack){ 
        if (mail($to,$subject,$body,'From: '.$email."\r\n")){ 
       $displayForm=false; 
     ?> 
     <div>Your message has been sent successfully. Thank you for contacting us.</div> 
     <?php 
      echo '<p>'.htmlspecialchars($message).'</p>'; 
      }else { 
     ?> 
     <div>Your message could not be sent due to a system error. We apologize for any inconvenience.</div> 
     <?php 
      } 
      }else if ($crack){ 
     ?> 
     <div>Your message contained one or more anomalies, indicative of malicious content. Please consider revising your wicked ways.</div> 
     <?php 
      }else { 
     ?> 
     <div>You failed to complete a required field, or to provide a valid email address.</div> 
     <?php 
      } 
       } 
      if ($displayForm){ 
?> 

<form action="./" method="post"> 
    <div class="contact-border"><input class="contact-textbox" type="text" name="sender" id="sender" tabindex="1" value="<?php echo htmlspecialchars($sender); ?>" /> <strong> Name</strong></div> 

    <div class="contact-border"><input class="contact-textbox" type="text" name="email" id="email" tabindex="2" value="<?php echo htmlspecialchars($email); ?>" /> <strong> Email Address</strong></div> 

    <div class="contact-border-noreq"><input class="contact-textbox-noreq" type="text" name="subject" id="subject" tabindex="3" value="<?php echo htmlspecialchars($subject); ?>" /> <strong> Subject (optional)</strong></div> 

    <div class="contact-border"><textarea class="contact-textbox" name="message" id="message" cols="90" rows="15" tabindex="4" ><?php echo htmlspecialchars($message); ?></textarea></div> 

    <div><input class="submit-button" type="submit" value="Submit" name="submit" /></div> 
</form> 
     <?php 
      } 
     ?> 

回答

0

你的代码看起来还好,但我可能会建议增加一个CAPTCHA?我犯了一个错误,就是没有在我的网站上放置一个,并在垃圾邮件中付出了沉重的代价几天。

+0

非常感谢Jason。我之前已经接受过采纳,但是取消并采用了“隐藏领域”选项。我有一个通过css隐藏的输入,如果脚本被填充,它将会终止该脚本。我还没有使用垃圾邮件。我只是讨厌填写验证码,不想让我的访问者通过它。 我将其删除以简化代码,并让任何查看它的人更容易。 我希望能够保护自己免受头部注射或跑步脚本,劫匪等。基本上希望尽可能保证自己的安全。 再次感谢您的帮助:) – 2010-01-29 05:34:56

相关问题