从网址提交php检查表单

时间:2010-08-05 13:13:41

标签: php

如何确保攻击者或垃圾邮件制造者不会尝试从http://localhost计算机发送数据?我正在开发Flex / flash应用程序,然后将数据提交给PHP。我知道他们有能力反编译动作脚本,HTTP_REFERER会帮助吗?

5 个答案:

答案 0 :(得分:1)

并非所有浏览器都提供HTTP_REFERER且很容易被欺骗,因此无法保护您的表单。

您可以做的最好的事情,也是您唯一能做的事情,就是确保您的PHP代码不信任任何输入。您应检查提交到表单的任何值是否在可接受的值范围内,如果适用,请仔细检查登录信息等。

如果您担心机器人,请使用recaptcha或将任何IP地址的提交数量限制为每分钟3(例如 - 根据您的情况选择合适的速度)。

简而言之:您永远不能确定表单提交的来源。您必须准备好处理来自攻击者的提交。

答案 1 :(得分:0)

您可以使用引荐来源,但即便如此也可能被欺骗。如果是我,我会sha1()一些随机字符串或闪存中的内容并将其传递给您的表单,然后您可以在php端sha1()并检查它们。

也许你甚至可以让它成为动态的东西,比如

sha1(date('Y-m-d')."MySaltPhrase");

答案 2 :(得分:0)

parse_url()结合字符串操作应该有效。试试这个:

$url = parse_url($_SERVER['HTTP_REFERER']);
$host = implode('.',array_slice(explode('.',$url['host']),-2));

if (strtolower($host) == 'google.com') {
// code......
}

答案 3 :(得分:0)

使用CAPTCHA进行验证。在提交表单时,您无法判断源或引用者是本地主机还是公共IP地址。你会看到的本地主机是你自己的。

答案 4 :(得分:0)

答案很简单 - 你不能 因为每个表单实际上都是从用户的本地计算机发送的。那是HTML的东西,你最好明白这一点。将为您节省大量时间。

一般来说,你根本不需要任何保护。 但对于某些特定情况,保护策略会有所不同

  • 防止垃圾邮件使用CAPTCHA
  • 防止CSRF使用唯一令牌,存储在会话和表单的隐藏字段中
  • 在此处添加您自己的特定任务以获取特定的保护方法。从你想要防守的攻击?