您可以使用PHP Explode()来帮助防御注入攻击吗?

您可以使用PHP Explode()来帮助防御注入攻击吗?,php,forms,security,code-injection,spam,Php,Forms,Security,Code Injection,Spam,我一直在浏览一些帖子,看看如何防止各种形式的“注射”攻击 这是一篇非常棒的文章,对数据库非常有帮助,但是我想做的一件事是防止我的邮件服务器被“注册”的人使用,并使用一串逗号分隔的电子邮件收件人发送垃圾邮件。这是一个似乎没有被经常提及的话题 是的,Captcha(或等价物)已经到位,这更适合那些在电子邮件字段中剪切并粘贴一长串逗号分隔值的讨厌用户 我希望爆炸,然后只取数组中的零元素,将是最好的方法来抛开其他元素,但是如果有人有其他想法或方法,那么很高兴阅读它们 $emails_passed = e

我一直在浏览一些帖子,看看如何防止各种形式的“注射”攻击

这是一篇非常棒的文章,对数据库非常有帮助,但是我想做的一件事是防止我的邮件服务器被“注册”的人使用,并使用一串逗号分隔的电子邮件收件人发送垃圾邮件。这是一个似乎没有被经常提及的话题

是的,Captcha(或等价物)已经到位,这更适合那些在电子邮件字段中剪切并粘贴一长串逗号分隔值的讨厌用户

我希望爆炸,然后只取数组中的零元素,将是最好的方法来抛开其他元素,但是如果有人有其他想法或方法,那么很高兴阅读它们

$emails_passed = explode(",", $_POST['email_field']); // could also use $_GET
$email_to = $emails_passed[0];

是的,你可以,但这样做是不明智的。简单检查是否提供了有效的电子邮件,有关一些基本的电子邮件验证,请参阅。有效的电子邮件不包含逗号

因此,如果它有一个逗号,它是无效的,所以你应该对用户说,请给一个有效的电子邮件。认为用爆炸法能更好地解决问题

上面的故事只适用于允许发送单个电子邮件的情况(foo@bar.com)正如Gumbo在评论中指出的,允许在电子邮件中使用逗号

因为你的问题是要阻止人们发送多封电子邮件,所以你要“垃圾邮件”他们。我仍然建议验证电子邮件并进行检查


希望额外的信息,感谢Gumbo的帮助

html5包括一封现场电子邮件,也可以为您处理。谢谢@DevZer0我不清楚-很抱歉。我喜欢HTML5选项,并且一直在使用HTML5处理我的页面,但遗憾的是,并不是每个浏览器(现在)都能很好地处理它——尽管我已经迫不及待了。清理是修复无效用户输入的行为。只有在无法询问用户时,才会发生这种情况。如果用户因为刚刚提交了一份表格并正在等待接受确认而被询问,请与他面对错误列表,不要接受该表格。-1你错了:
“foo,bar”@example.com
是一个有效的电子邮件地址。据我所知,这不是一封有效的电子邮件,而是电子邮件的组合(foo@example.com及bar@example.com)。同样,在这个问题上,explode也不起作用。@Hendriq它实际上是有效的:如果您查看,addr spec中的本地部分可以是。但是,这些地址很少被允许用于真实世界的地址。@gumbo,不知道这些信息并修改了文本。所以您看到我们每天都会有新的内容