2014-02-28 7 views
0

여기 Newbie. 나와 함께 견뎌주세요. 그래서 나는 PHP 메일러 스크립트를 작성했다. 필드의 기본 유효성 검사를 수행하고 오류를 반환하고 모두 양호한 경우 제출합니다. 그러나 그것은 또한 채워질 필요가없는 허니팟 필드를 가지고 있습니다. (나는 CSS를 사용하여 그것을 숨겨서 어쨌든 필드에서 채울 것입니다). 필드가 비어 있지 않으면 텍스트 파일을 열고 시도를 기록/추가하며 시도에 대한 전자 메일 경고를 보냅니다.내 PHP 코드가 취약점이 열려 있으면 의견이 필요합니다.

<?php 
//print_r($_POST); 
$error['name'] =""; 
$error['company']=""; 
$error['email'] =""; 
$error['subject'] =""; 
$error['message'] =""; 
$error['website'] =""; 
$success = ""; 
$thistime = time(); 
$current_date = date('m/d/Y/T ==> H:i:s'); 

if(isset($_POST['_save'])) { 
    $name = stripslashes($_POST['name']); 
    $email = stripslashes($_POST['email']); 
    $company = stripslashes($_POST['company']); 
    $message = stripslashes($_POST['message']); 
    $subject = stripslashes($_POST['subject']); 
    $website = stripslashes($_POST['website']); 

    if (empty($name) || empty($email) || empty($subject) || empty($message) || 
      !empty($website)) { 
    if (empty($name)) 
     $error['name'] = "Please enter your Full Name"; 
    if (empty($email)) 
     $error['email'] = "Please enter a valid Email Address"; 
    if (empty($company)) 
     $error['company'] = "Please enter Your Company Name"; 
    if (empty($subject)) 
     $error['subject'] = "Please Write a Subject"; 
    if (empty($message)) 
     $error['message'] = "Please write a message, inquiries or 
       other concerns above"; 
    if (!empty($website)) 
     $error['subject'] = "Opps looks like you're a spambot. You 
       just filled in a not required field.; 
     $myFile = "botlog.txt"; 
     $fh = fopen($myFile, 'a') or die("can't open file"); 
     $stringData = "bot trapped" . " " . "-" . " " . $website . " " . "- 
        " . " " . $current_date . "\r\n"; 
     fwrite($fh, $stringData); 
     fclose($fh); 
     $donot="[email protected]"; 
     $headers="From: {$email}\r\nReply-To: {$donot}"; //create headers 
     mail('[email protected]',$headers,$stringData); 
    } 
    else { //if not empty 
    stripslashes($headers); 
    $headers="From: {$email}\r\nReply-To: {$email}"; //create headers 
    $content="Name: ".$name."\r\n\r\nCompany: " 
       .$company."\r\n\r\nSubject: ".$subject."\r\n\r\nMessage: ".$message; 
    mail('[email protected]',$subject,$content,$headers); //mails it 
    $success = "Thank you! You're email has been sent."; 
    #done; 
    } 
} 
?> 

나는 제대로하고 있습니까? 이것은 어떤 취약점을 열었습니까? 나는 모든 제안과 개선에 개방적이다. 감사.

+0

왜 제거하는 슬래시입니다 .. 당신의 POST 변수를 소독하지? –

+1

틀린 장소, 여기에 게시해야합니다 http://codereview.stackexchange.com/ –

+0

또한 구문 오류를 먼저 수정하십시오. –

답변

0

당신은 전자 메일 및 웹 사이트를 제외하고 하나의 매우 일반적인 실수에게 모든 것을