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

使用JavaScript/PHP安全地提交表单,javascript,php,post,encryption,form-submit,Javascript,Php,Post,Encryption,Form Submit,在提出这个问题之前,我承认这种方法非常不受欢迎,也不安全。我知道要实现这一点,需要通过SSL 然而,我正在开发一个HTML5应用程序(实现SSL方法似乎需要很多时间),我想知道发布表单内容的最佳方式 i、 我有以下表格 <form id="someform" name="someform" method="POST" action="some/server/url"> 此表单的提交方式(当前)是使用ajax$(“#someform).serialize()等 使用此实现,我面临

在提出这个问题之前,我承认这种方法非常不受欢迎,也不安全。我知道要实现这一点,需要通过SSL

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

i、 我有以下表格

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

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

使用此实现,我面临(至少)以下两个紧迫问题:

  • 用户可以使用工具(如TamperData |一个firefox插件)修改发布的内容(拦截和修改)
  • 用户可以通过发送“伪造”提交来伪造数据(伪造)
  • 我想知道是否有某种方式,我至少可以(混淆后教育)的价值

    我遇到了这个很棒的工具,但不确定如何实现它来解决我面临的问题

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

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

    第一修正案:

    我相信至少有一个工作围绕着使用这个理论

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

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

    这一理论导致了数字签名,其中(同样在理论上)我应该以某种方式使用服务器PUB键对POST-ed值进行签名,然后使用服务器PUB键对POST-ed值进行散列,最后将原始POST-ed值与散列值一起发送

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

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

    现在我还不明白的部分是如何


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

    更进一步,认识到用户也可以加密伪造的数据。
    SSL也不能帮助防止这种篡改

    这是一条web开发公理:一切都可以在客户端伪造。句号。

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

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

    用户

    伪造表单提交


    您将获得完整的信息

    @您的常识,即使是通过会话,“已验证”“用户可以伪造数据。另外,我应该如何验证我的输入?不,他们不能篡改会话数据。这就是机制的关键所在,因为会话数据存储在服务器端。以通常的方式验证你的输入。如果我必须对你坦诚相待,我仍然不确定我是否能遵循你的建议。我如何验证用户输入(从技术角度来看)?只是不要期望从客户机获得有效数据并手动验证。这就是全部。我不理解你的误解——输入数据验证是网络编程的基石,世界上每个网站都这样做。验证输入是服务器防止篡改所能做的一切;我不知道为什么。如果你敢投反对票,请敢于发表评论