0

在问这个问题之前,我承认这种方法非常不鼓励并且不安全。我知道要实现这一点是通过 SSL。

但是,我正在开发一个 HTML5 应用程序(似乎实现 SSL 方法需要很多时间),我想知道发布表单内容的最佳方式。

即我有以下表格

<form id="someform" name="someform" method="POST" action="some/server/url">

提交此表单的方式(当前)是使用 ajax $("#someform).serialize() 等等..

使用这个实现我面临(至少)这两个直接的问题:

  1. 用户可以使用工具(即 TamperData | 一个 firefox 插件)来修改发布的内容(拦截和修改)。
  2. 用户可以通过发送“假”提交来伪造数据(伪造)

我想知道是否有某种方式我至少可以(混淆 POST-ed)值。

我遇到了这个很棒的http://www.jcryption.org/工具,但不确定我应该如何实施它来解决我面临的问题。

ps:我再次意识到,与从服务器端处理所有执行相比,依赖客户端脚本的安全性要低得多。

我使用的框架+语言是:CodeIgniter + PHP + JavaScript (jquery)

第 1 条修正案:

我相信至少有一个解决方法使用这个理论

首先,我不太担心我的数据的机密性部分,即 POST-ed 值不会提供任何有价值的信息,即使其他人知道它是什么。

不过,我担心的是 POST-ed 值的完整性和真实性。这只是意味着一旦信息被传输(一旦单击提交按钮),任何人都不应篡改信息,任何人都不能伪造或创建虚假值(欺骗服务器)。

这个理论导致数字签名,其中(再次在理论上)我应该以某种方式使用服务器 PUB 密钥对 POST ed 值进行签名,然后使用服务器 PUB 密钥对 POST ed 值进行散列,最后发送原始 POST ed值以及散列值。

在发送 POST-ed 值之前,客户端必须请求服务器 PUB-key,以便客户端可以散列 POST-ed 值。服务器可能会将 PUB 密钥信息与 SESSION 信息一起存储。

然后服务器必须(再次)散列(这次使用服务器 PRI-key)原始 POST 值(由客户端发送)并比较两个散列值。如果这些值相同,则仅表示它是真实的。

现在我还没有理解的部分是如何......

有没有关于如何做到这一点的工具/框架/插件/教程/示例?因为从头开始开发整个公钥基础设施对我来说太多了(更不用说我的时间有限了)

4

2 回答 2

3

更进一步,意识到用户也可以加密伪造的数据。
而 SSL 无助于防止这种篡改。

这是网络开发的公理:一切都可以在客户端伪造。时期。

因此,无需加密任何内容,只需在服务器端验证您的输入,就像其他所有站点一样。

用于sessions存储用户不应访问的数据。

于 2013-05-29T13:15:25.047 回答
-1

用户

欺骗性表单提交

您将在此处获得完整信息

于 2013-05-29T13:18:29.273 回答