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

标签 php forms security code-injection spam

我浏览了一些帖子,以了解防止各种形式的“注入(inject)”攻击的方法。

What's the best method for sanitizing user input with PHP?是一篇很棒的帖子,对数据库非常有帮助,但是我想做的一件事是防止我的邮件服务器被某人“注册”并使用一串逗号分隔的电子邮件地址向人们发送垃圾邮件。这是一个似乎不经常被讨论的话题。

是的,验证码(或同等内容)已就位,这更适合那些将一长串逗号分隔值剪切并粘贴到电子邮件字段中的讨厌用户。

我希望爆炸然后只取数组中的零元素是抛弃其余元素的最佳方法,但是如果有人有其他想法或方法,那么非常乐意阅读它们。

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

最佳答案

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

因此,如果它有逗号,则无效,因此您应该对用户说,请提供有效的电子邮件。认为比使用爆炸更好地解决问题

只有当您允许单个电子邮件 ( [email protected] ) 就像 Gumbo 在评论 the specs 中指出的那样时,上述故事才算数。允许在电子邮件中使用逗号。

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

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

关于php - 您可以使用 PHP Explode() 来帮助防御注入(inject)攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17502412/

相关文章:

php - Cakephp:我如何将所有丢失的 Controller /操作调用路由到一个单一的一般错误页面?

javascript - Internet Explorer HTML 标记未立即更新

css - 选择控件的 Bootstrap 跨浏览器问题

javascript - 如何创建一个表单切换开关来代替提交按钮?

java - Spring security - 拦截 url 模式映射

c# - 我如何签署变量?

php - 无法使用 PHP 将视频上传到 Facebook 页面,但可以使用curl

php - SQLite 文件大小在删除表后仍然没有改变

javascript - 如何处理 javascript 生成的输入

linux - 如何编写 bash 脚本来测试登录表?