0

我正在构建我的第一个联系表。

我有一个与此类似的页面,其中包含很多字段... http://www.missingpeople.org.uk/component/option,com_rsform/Itemid,144/lang,en/view,rsform/

该表单在提交后会重定向到我的流程页面,其中包含...

<?php

foreach ($_POST as $key => $value)
$message .= "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."\r\n";

mail('liam@site.co.uk', 'sghting', $message); 

?>

从我一直在阅读的过程来看,虽然这似乎容易受到注射?抱歉,如果这听起来很幼稚,我对这个过程很陌生。我要问的是我从哪里开始阅读清理这段代码?

4

2 回答 2

1

它可能很容易受到攻击 - 只是不是 sql 注入。mail是一个非常原始的界面,它只是将东西传递到邮件传递系统。如果您没有正确转义,则将邮件标头注入邮件中是微不足道的。这样,攻击者可以使用您的邮件表单来发送垃圾邮件或欺骗发件人以及可能发生的其他您不希望发生的事情。

我强烈建议您使用诸如 Swift mailer 之类的库,而不是自己尝试这样做,它会为您处理所有这些。

http://swiftmailer.org/

于 2012-11-05T15:11:50.397 回答
0

如果它是一个 SQL 查询,那会很危险,因为您可以轻松地插入一些单引号和分号来运行您自己的代码,但发送邮件的情况并非如此。如果您稍后将该电子邮件保存到数据库中,那么它可能容易受到 SQL 注入的攻击。

您可以运行此值htmlentities()以对内容进行 HTML 编码,这对于电子邮件来说应该没问题,并且会删除大部分特殊字符。

于 2012-11-05T14:26:07.970 回答