PHP后端/前端安全性

时间:2012-09-21 00:37:39

标签: php web-services web-applications security

大家好,

虽然我在洗澡时花了我一些有趣的东西。在PHP中,您如何判断提交的用户表单是否有效而不是欺诈(即某些其他网站上的某些其他表单有动作=“http://mysite.com/sendData.php”)?因为实际上,任何人都可以创建一个表单来尝试在真实后端发送和匹配$ _POST变量。如何确保 脚本是合法的(来自我的网站,只有我的网站),所以我没有某种克隆网站数据窃取的事情上?

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

  • 生成一次性密钥并存储在隐藏的输入字段中
  • 尝试(但有可能)抓取表单所在的网址(可能无法实现)
  • 使用一些非常复杂的PHP好东西来确定数据的发送位置(可能)

有什么想法吗?谢谢大家!

3 个答案:

答案 0 :(得分:1)

这些来自黑客的尝试大部分将由curl使用。使用curl更改引用代理很容易。你甚至可以用curl设置cookie。但欺骗md5哈希密钥与私人盐,并将其存储在会话数据将阻止大多数普通的黑客和机器人。保持密钥存储在数据库中将添加身份验证。

答案 1 :(得分:0)

有几种简单的方式:

  • 检查$_SERVER['HTTP_REFERER']以确保您的主机是引荐脚本
  • 在表单中添加散列密钥,并使用存储的服务器会话变量进行检查。

但以上所有内容都可以通过某种方式进行操纵和欺骗。因此,您可以使用 CSRF验证。这是一个非常好的article

我遇到的其他其他技巧是:

  • 为表单添加时间限制并确保在该时间内提交表单。
  • 在与表单的每次交互中,发送AJAX请求以验证和反应表单的时间限制。

答案 2 :(得分:0)

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

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

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

Keygen tag in HTML5

RFC

相关问题