如何确保攻击者或垃圾邮件制造者不会尝试从http://localhost计算机发送数据?我正在开发Flex / flash应用程序,然后将数据提交给PHP。我知道他们有能力反编译动作脚本,HTTP_REFERER会帮助吗?
答案 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的东西,你最好明白这一点。将为您节省大量时间。
一般来说,你根本不需要任何保护。 但对于某些特定情况,保护策略会有所不同