【问题标题】:Am I safe (XSS injection, etc) with my website contact form with Google Captcha?我使用 Google Captcha 的网站联系表是否安全(XSS 注入等)?
【发布时间】:2019-03-14 03:58:59
【问题描述】:

我的网站遭受了注入(来自知识库系统中的搜索框)。我删除了那个 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;
?>

【问题讨论】:

  • 与所有接受用户输入的 Web 表单一样,必须对输入进行清理以防止 XSS 等注入攻击

标签: security web


【解决方案1】:

TL;DR:简短回答:也许:

虽然我现在没有时间对这篇文章做出完整而准确的回答;我将向您指出一些最佳实践,以及许多指向其他更详细答案的链接,以解决有关使用户输入数据安全的类似问题。

如何让输入更安全?

  • Disable certain dangerous PHP functions。阅读第二个答案而不是“打勾”的答案。

  • 使用 PHPs filter_var() 强制输入正确的类型,尤其是对于电子邮件:

     $email = filter_var($_POST['contact-email'], FILTER_SANITIZE_EMAIL);
    
  • 使用 preg_replace() (或 str_replace() )从您的值中删除不需要的字符。这通常可以是反引号、任何类型的引号、正斜杠或反斜杠。 Example.

  • 我建议将代码中的 mail() 替换为 PHPMailer。

  • strip_tags 可以,但也可以。它有缺陷(例如处理未封闭的标签)。请注意这一点。

  • 你的 PHP 应该被适当地监禁,所以 如果有人可以运行 exec(...) 命令 (Ohsh1tOhsh1tOhsh1t) 你没有(字面上)丢失你的服务器。

我还能阅读什么?

【讨论】:

  • 谢谢马丁。我将深入探讨您提到的每个主题。谢谢!
  • 我相信这篇文章回答了您的问题。如果是,请打勾,谢谢:-)
猜你喜欢
  • 2012-07-24
  • 1970-01-01
  • 2014-02-16
  • 2021-07-13
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
相关资源
最近更新 更多