使用JavaScript / PHP安全地提交表单

时间:2013-05-29 13:10:32

标签: javascript php post encryption form-submit

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

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

即我有以下表格

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

此表单的提交方式(目前)是使用ajax $(&#34; #someform).serialize()等等。

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

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

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

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

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

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

    第1修正案:

    我确信至少有一个使用这个理论的工作

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

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

    这个理论导致数字签名,其中(理论上)我应该以某种方式使用服务器PUB-key签署POST-ed值,然后使用服务器PUB-key散列POST-ed值,最后发送两个原始值POST值和散列值。

    在发送POST-ed值之前,客户端必须请求服务器PUB-key,因此客户端可以对POST-ed值进行散列。服务器可能存储PUB密钥信息以及SESSION信息。

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

    现在我尚未理解的部分是如何......

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

2 个答案:

答案 0 :(得分:3)

更进一步,并意识到用户也可以加密伪造的数据 SSL无法帮助抵御这种篡改。

这是一个网络发展公理:一切都可以在客户端伪造。周期。

因此,与其他任何网站一样,只需验证服务器端的输入,而不是加密任何内容。

使用sessions存储用户无权访问的数据。

答案 1 :(得分:-1)

用户

欺骗表单提交

您将获得完整信息here