簡體   English   中英

使用Google Captcha的網站聯系表,我是否安全(XSS注入等)?

[英]Am I safe (XSS injection, etc) with my website contact form with Google Captcha?

我在網站上遭受了注入(通過KB系統中的搜索框)。 我刪除了該KB系統,但有一個聯系表單(帶有Google Captcha),用戶在其中輸入他的姓名,電子郵件和消息,然后使用PHP mail()向我發送消息。

攻擊者是否有可能通過對該表格的攻擊而獲得對我網站的訪問? 還是最壞的情況就是他用它發送垃圾郵件?

這是我在調用“ main()”之前的PHP代碼:

<?php

$fname = $_POST['contact-f-name'];
$lname = $_POST['contact-l-name'];
$email = $_POST['contact-email'];
$text = $_POST['contact-message'];

$companyname = $_POST['company-name'];
$subject = $_POST['subject'];

$address = "myemail@myemail.com"; 

$headers  = "From: " . strip_tags($email) . "\r\n";
$headers .= "Reply-To: ". strip_tags($email) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type:text/plain; Charset=UTF-8 \r\n";

$message =          ."Name: ".strip_tags($fname)." ".strip_tags($lname)."\r\n"
                    ."Email: ".strip_tags($email)."\r\n"
                    ."Company Name: ".strip_tags($companyname)."\r\n"
                    ."Subject: ".strip_tags($subject)."\r\n"
                    ."Message: ".strip_tags($text)."\r\n";

if(@mail($address, $subject, $message, $headers)) { echo "true"; } 
else { echo "false"; }
exit;
?>

TL; DR:簡短答案:也許:

盡管我現在沒有時間對此帖子做一個完整而嚴格的答案; 我將為您指出一些最佳做法,並提供許多其他鏈接的鏈接,這些鏈接是關於使用戶輸入的數據安全的類似問題的其他更詳細的答案。

如何使輸入更安全?

  • 禁用某些危險的PHP函數 閱讀第二個答案,而不是“打勾”的答案。

  • 使用PHP的filter_var()強制輸入正確的類型,尤其是對於電子郵件:

     $email = filter_var($_POST['contact-email'], FILTER_SANITIZE_EMAIL); 
  • 使用preg_replace() (或str_replace() )從值中刪除不需要的字符。 這通常是反引號,任何形式的引號,正斜杠或反斜杠。 例子

  • 我建議用PHPMailer替換代碼中的mail()

  • strip_tags還可以,但是還可以。 它有缺陷(例如處理未封閉的標簽)。 注意這一點。

  • 您的PHP應該適當地入獄,因此, 如果有人可以運行exec(...)命令( Ohsh1tOhsh1tOhsh1t ),則您(實際上)不會丟失服務器。

我還能讀什么?

暫無
暫無

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

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