如何确保攻击者或垃圾邮件发送者不会试图从http://localhost计算机发送数据?我正在开发Flex/Flash应用程序,然后将数据提交给PHP。我知道他们有能力反编译actionscript,HTTP_REFERER会有帮助吗?php检查表单提交url
回答
你可以使用referrer,但即使这样也可能被欺骗。如果是我,我会sha1()
一些随机字符串或闪存中的东西,并通过与您的窗体,然后你可以在PHP端sha1()
并检查它们。
也许你甚至可以让动态的东西,像
sha1(date('Y-m-d')."MySaltPhrase");
parse_url()
与字符串操作相结合应该工作。试试这个:
$url = parse_url($_SERVER['HTTP_REFERER']);
$host = implode('.',array_slice(explode('.',$url['host']),-2));
if (strtolower($host) == 'google.com') {
// code......
}
并非所有浏览器提供HTTP_REFERER,它可以很容易地被欺骗,所以它不会保护您的形式。
您可以做的最好的事情,也是您唯一可以做的事情是确保您的PHP代码不信任任何输入。您应该检查提交给您的表单的任何值是否在可接受的值范围内,如果适用,请仔细检查登录信息等。
如果您担心机器人,请使用recaptcha或限制任何IP的提交数量地址为3分钟(例如 - 为您的情况选择适当的速度)。
简而言之:您永远无法确定表单提交的起源地点。您必须准备好处理来自攻击者的提交内容。
我完成了所有。但SSL有帮助吗? – proyb3 2010-08-05 13:32:21
如果你这样做了,你担心什么?你认为你可能容易受到什么样的攻击? – 2010-08-05 13:33:51
使用验证码进行验证。在提交表单时,您无法确定源或引用来源是本地主机还是公共IP地址。您将看到的本地主机是您自己的。
答案很简单 - 你不行。
因为每个表单实际上是从用户的本地计算机发送的。这是HTML的东西,你最好明白这一点。将为您节省大量的时间。
一般来说,你根本不需要任何保护。 但是对于一些特殊情况下的保护策略会有所不同
- ,以防止垃圾邮件使用CAPTCHA
- 防止CSRF利用独特的标记,同时存储在会话和窗体的隐藏字段
- 添加自己的特定任务这里得到一个特定的保护方法。从你想捍卫什么攻击?
- 1. 检查表单是否提交与PHP
- 2. JSP - 检查表单提交
- 3. URL提交表单
- 4. $ _GET PHP表单变量AJAX检查404然后提交表单
- 5. 检索Mailgun表单提交PHP
- 6. 检查表单提交的URL是否具有HTTPS
- 7. 提交从PHP表格检查选项
- 8. PHP表单提交
- 9. PHP - 提交表单
- 10. PHP表单提交
- 11. 的onclick提交检查PHP
- 12. 检查之前提交表单 - JavaScript的
- 13. 在提交表单前检查值
- 14. jQuery表单提交参数检查
- 15. POST不检查按钮表单提交
- 16. 使用条件检查表单提交?
- 17. 使用jquery检查表单提交?
- 18. 提交表单时自动检查checbox
- 19. Plone:检查表单是否已提交
- 20. HTML表单提交按钮检查
- 21. 提交表单后jQuery检查问题
- 22. 类似值检查表单提交
- 23. 表单提交后检查复选框
- 24. onunload - 检查表单是否已提交
- 25. 检查表单是否已提交
- 26. YII2提交表单的URL
- 27. 从表单url提交表单
- 28. 在提交之前检查jQuery验证的表单提交
- 29. 提交按钮不提交表单,但检查验证
- 30. 如何检查PHP中的表单提交?
如果有人反编译闪光灯,那么它可以仍然是恶搞? – proyb3 2010-08-05 13:24:52
是的,它可以被发现。通过查看网络流量也可以找到有效的值。在这个例子中,垃圾邮件发送者需要手动提交表单以找到魔术键,然后可以在脚本的剩余时间使用该键。 – 2010-08-05 13:27:53
是的,如果你写了一个自定义算法或其他东西,那么你可以用更加动态的东西代替它。但是,您需要Flash和PHP中的相同内容。那么你可以在每次提交时更改密钥:) – 2010-08-05 14:32:43