2012-09-21 137 views
-1

您好所有,PHP后端/前端安全

同时利用我的时间在洗澡时我虽然的一些有趣的事情。在PHP中,你怎么知道,如果提交用户的形式是有效的,而不是欺诈(即一些其他形式的其他网站用行动=‘http://mysite.com/sendData.php’)?因为真的,任何人都可以创建一个表单,尝试在真正的后端发送和匹配$ _POST变量。我怎样才能确保脚本是合法的(从我的网站,只有我的网站),所以我没有某种形式的克隆站点数据窃取的事情怎么回事?

我有一些想法,但不知道从哪里开始

  • 生成隐藏的输入字段
  • 尝试(但可能)一次性密钥和商店抢了表单所在的URL (大概是不可能的)
  • 使用了一些非常复杂的PHP好吃的东西来确定数据发送(可能)

任何想法?谢谢大家!

+0

随机一次性密钥是要走的路。不要试图检查请求来自哪里,即使有些方法可以很容易地被欺骗。 – Mahn

+0

这是有据可查的,一个简单的Google搜索将为您提供大量有关该主题的信息。即使您知道数据来自哪里,编辑页面的HTML也非常容易。最好的办法是验证服务器端的所有数据,如果你正确地做到了,它的来源应该无关紧要。 –

+0

大声笑好吧一次性密钥和会话哈希无处不在..但为什么-1? XD –

回答

1

大多数黑客这些尝试将卷曲使用。用curl来更换提名代理很容易。你甚至可以用卷曲设置曲奇。但欺骗md5散列密钥与私人盐并将其存储在会话数据将阻止大多数普通黑客和机器人。保持存储在数据库中的密钥将增加认证。

0

有喜欢的几个简单的方法:

  • 检查$_SERVER['HTTP_REFERER'],以确保您的主机是指脚本
  • 添加的形式哈希键,并存储在服务器会话变量检查它们。

但上述所有可以被操纵,并以某种方式欺骗。因此,您可以使用CSRF验证。这是一个非常好的article。我曾经遇到过

其他附加技术:

  • 添加时限,形式和确保他们在那段时间与提交。
  • 在与形式的每一次互动,发送AJAX请求验证和反应形式的时限。
+0

HTTP_REFERER可以很容易被客户欺骗 –

+0

好吧我得到它>一次性密钥/哈希会话变量..哈哈 –

0

HTML5提供了新的输入类型。该元素的目的是提供一种安全的方式来验证用户。该标签指定了表单中的密钥对生成器字段。

表单提交时,会生成两个密钥,一个是私钥,另一个是公钥。

私钥存储在本地,公钥发送到服务器。公钥可用于生成客户端证书,以便将来对用户进行身份验证。

Keygen tag in HTML5

RFC