Basit e-posta iletişim formu güvence

1 Cevap

Ben çok temel PHP becerilere sahip. Haliyle, (Ben dürüst ne kadar iyi bilmiyorum) bazı düzeyi güvenliği hattı bulunan bir iletişim formu mühendisi "ters" çalışıyorum. Ben çalışır, var düşünüyorum, ama ben sadece php belki size biraz daha tecrübe düşündüm bakışta üzerinde bu ve aslında hala güvenli olmadığını görmek mümkün.

Dediğim gibi, ben mühendislik tersine, bu yüzden güvenlik kırdı olmadığını bilmiyorum, ama bu sadece iyi çalışır. Gördüğünüz gibi oldukça basit. Ben (gerekirse bunu önlemek istiyorum) bir çok okuma ve sipariş ve fazlalık endişeleniyorum, her ne hakkında öğrenme oldum ... Ben kadar ben olabildiğince bunu temizlemek için yapabileceğiniz temelde bir şey.

Aşağıdaki kodu:

<?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
            }
        ?>

1 Cevap

Sizin kod tamam görünüyor, ama ben bir CAPTCHA ekleyerek önerebiliriz? Ben sitemde birini koyarak değil hata yaptım ve bir kaç gün için spam ağır bir bedel ödedi.