0
目前我正在處理用戶可以提交表單的問題,即使使用的字符完全是隨機的,並且還會隨機附加一封電子郵件。瞭解如何使用PHP過濾來自表單的惡意輸入
這樣的問題的一個實例中,呈現在屏幕截圖
當前的PHP代碼把手意見如下:
if(empty($_POST['First_Name']) ||
empty($_POST['Email']))
{
$errors .= "\n Error: all fields are required";
}
$firstname = $_POST['First_Name'];
$lastname = $_POST['Last_Name'];
$email_address = $_POST['Email'];
$company = $_POST['Company'];
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email_address))
{
$errors .= "\n Error: Invalid email address";
}
if(empty($errors))
{
$to = $myemail;
$email_subject = "Download Form Submission";
$email_body = "A new white paper registration was received. ".
" Visitor Details:\n \n First Name: $firstname \n \n Last Name: $lastname \n \n Email: $email_address \n \n Company: $company" ;
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
//redirect to the appropriate page
header('Location: news-and-resources.php');
}
?>
這是伴隨着這種形式的HTML:
<div class="modal-body">
<div class="form-group">
<form method="POST" name="downloadform" action="form-handler3.php" onSubmit="MM_validateForm('firstname','','R','lastname','','R','email','','RisEmail','company','','R');return document.MM_returnValue" accept-charset="iso-8859-1">
<p>
<label for='firstname'>First Name</label> <br>
<input name="First_Name" type="text" id="firstname" size="30">
</p>
<p>
<label for='lastname'>Last Name</label> <br>
<input name="Last_Name" type="text" id="lastname" size="30">
</p>
<p>
<label for='email'>Email Address</label> <br>
<input name="Email" type="text" id="email" size="30"> <br>
</p>
<p>
<label for='company'>Company</label><br>
<input name="Company" type="text" id="company" size="30"> <br>
</p>
<p style="text-align:center;"><input type="submit" onclick="modal.close();" value="submit"></p>
</form>
</div> <!-- END OF FORM GROUP -->
</div> <!-- END OF MODAL BODY -->
我不確定我是否需要d在提交之前驗證客戶端,或者在提交之後驗證。無論哪種方式,我希望能夠獲得有關如何從表單中去除隨機字符和電子郵件的見解。任何有識之士將不勝感激。
感謝
您一定需要在服務器端進行驗證,但您也可以選擇在客戶端進行驗證,以便您可以更快地給出反饋。 – 4castle
尋找'蜂蜜罐'技術。這對於機器人來說簡單而且非常有用。另外,如果你想讓事情正確,你需要對注入攻擊進行驗證。 –
事情是,你怎麼知道什麼是隨機的,什麼是一個非常奇怪的名字? (對於給定的奇數值。)我的意思是,有許多方法可以驗證電子郵件至少是適當的格式,但對於名稱,我曾與來自波蘭,俄羅斯,韓國等的人員以及一些名稱有奇怪的拼寫。 –