我的网站上有一个联系表。我有一个“允许”主题的下拉列表。但是,我一直收到从表单发送的电子邮件,其中的主题不在我的下拉表单中。
该表单是一个 ExpressionEngine 模板,它通过添加的 url 段提交给自己。即“/contact/submit”。模板检查提交段,然后将值发送到构建电子邮件并发送它的 EE 插件。表单的方法是 POST。
他们怎么能绕过主题下拉菜单?
可能发生的事情是他们正在注入自己的主题。如果您的下拉值是字符串并且您只是按原样使用它们,那么使用您自己的主题非常容易。
作为修复,您可以将数字 ID 绑定到每个下拉值,然后在后端,在可能的值之间进行切换。例如(在 PHP 中)
<?php
$reject = false;
if(isset($_POST['subject']))
{
switch(intval($_POST['subject']))
{
case 1: // General inquiry:
$subjectStr = "General Inquiry";
break;
...
default:
$reject = true;
break;
}
}
else
{
$reject = true;
}
if(!$reject)
{
// Process email
}
?>
您(或浏览器或垃圾邮件脚本/应用程序)几乎可以将任何内容“发布”到服务器。由 Web 应用程序决定什么是有效的并根据输入采取行动(或忽略请求)。我建议您考虑重写您的 EE 模板,使其更加健壮(即,在采取行动之前验证输入)。
是的。这将非常简单,可以创建一个机器人。类似于 Captcha 或 MintEye 的东西是当前避免基于机器人的垃圾邮件的最佳实践。
那么浏览器可见的任何东西都可能以一种或另一种方式受到损害。您会看到一个下拉列表并且它在视觉上看起来是安全的,但事实并非如此。如果你没有一个安全机制作为验证码或类似的东西,那么情况会糟糕 10 倍——在这种情况下,任何人都可以编写一个指向你表单动作的脚本。否则,人们可能会坚持我所说的“青少年”方法。Firefox 有一个名为 firebug 的扩展,它允许您修改 html 和在您的特定情况下的下拉菜单。Chrome 默认集成了该功能(按 f12)。您最好的选择是重新设计您的安全机制。