簡體   English   中英

確保簡單的電子郵件聯系表

[英]In securing simple email contact form

我有非常基本的PHP技能。 就目前而言,我試圖“逆向”設計一個我發現行具有一定級別安全性的聯系表單(我真的不知道它有多好)。 我想我知道了,它能起作用,但是我只是想也許你們中有一些在php方面有更多經驗的人可以瀏覽一下它,看看它是否仍然安全。

正如我所說,我對它進行了反向工程,所以我不知道是否破壞了安全性,但是它確實可以正常工作。 如您所見,這是非常基本的。 我已經讀了很多書,學習了所有功能,只是擔心訂購和冗余(如果需要,可以避免使用)...基本上,我可以做的就是盡可能多地清理它。

代碼如下:

<?php
            $to='my@mail.com';
            $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]+@([-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
            }
        ?>

您的代碼看起來不錯,但是我建議添加一個驗證碼嗎? 我犯了一個錯誤,就是沒有在我的網站上放一個,並且在幾天之內付出了高昂的垃圾郵件價格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM