使用JavaScript / PHP安全地提交表单
Securely submit form using JavaScript / PHP
在问这个问题之前,我承认这种方法是非常不鼓励的,而且不安全。我知道这是通过SSL实现的。
然而,我正在开发一个HTML5应用程序(似乎实现SSL方法会花费很多时间),我想知道发布表单内容的最佳方式。
。e我有下面的表单
<form id="someform" name="someform" method="POST" action="some/server/url">
这个表单提交的方式(目前)是使用ajax $("#someform ").serialize()等…
使用这个实现,我面临(至少)这两个直接的问题:
- 用户可以使用工具(即TamperData | firefox插件)修改发布的内容(拦截和修改)。
- 用户可以通过发送"伪造"提交(锻造)来伪造数据
我想知道是否有某种方式我至少可以(混淆POST-ed)值。
我遇到了这个伟大的http://www.jcryption.org/工具,但不确定我应该如何实现它来解决我所面临的问题。
ps:我再次意识到,与在服务器端处理所有执行相比,依赖客户端脚本是不太安全的。
框架+语言我使用的是:CodeIgniter + PHP + JavaScript (jquery)
第一修正案:
我相信至少有一种方法可以使用这个理论
首先,我不太担心我的数据的机密性部分,即POST-ed值不会提供任何有价值的信息,即使别人知道它是什么。
我关心的是POST-ed值的完整性和真实性。这只是意味着,一旦信息被传输(一旦提交按钮被点击),任何人都不应该篡改信息,也没有人可以伪造或创建假值(欺骗服务器)。
这个理论导致了数字签名,其中(再次在理论上)我应该以某种方式使用服务器PUB-key对POST-ed值进行签名,然后使用服务器PUB-key对POST-ed值进行散列,最后发送原始POST-ed值和散列值。
在发送POST-ed值之前,客户端必须请求服务器的PUB-key,以便客户端可以散列POST-ed值。服务器可能会将PUB-key信息与SESSION信息一起存储。
然后服务器将不得不(再次)散列(这次使用服务器的PRI-key)原始POST-ed值(由客户端发送)并比较两个散列值。如果这些值是相同的,这仅仅意味着它是真实的。
现在我还不明白的部分是如何.....
有什么工具/框架/插件/教程/例子如何做到这一点?因为从头开始开发整个公钥基础设施对我来说太多了(更不用说我有限的时间了)
更进一步,用户也可以加密伪造的数据。
而SSL无法防止这种篡改。
这是一个web开发公理:一切都可以在客户端伪造。时期。
所以,不用加密任何东西,只需在服务器端验证你的输入,就像其他网站一样。
使用sessions
存储用户不应该访问的数据。
用户
欺骗表单提交
你可以在这里获得完整的信息
- Jquery提交表单而不刷新
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- 每次提交表单时都会重新加载网页
- Razor中的自动提交表单
- 使用 JavaScript 自动提交表单
- 点击相同的按钮打开模型,然后提交表单
- 添加和删除隐藏字段数组中的值,而不提交表单
- 使用Ajax提交表单
- jQuery:使用“jQuery验证”后无法提交表单's远程验证
- 如何在不重新加载的情况下提交表单,并使用Node+Express将数据传递回同一页面
- 有登录表单时无法提交表单
- 带有select的jquery提交表单不起作用
- 如何防止回车键提交表单,但仍然允许回车工作
- 使用按钮和单选按钮提交表单,但始终使用相同的值
- 在提交表单之前确定重复值
- 如何创建动态ajax提交表单
- HTML提交表单,同时包含空字段检查和按钮隐藏
- 如何使用jQueryAjax使用动态html输入texbox提交表单
- 当触发下拉列表的onchange事件时,使用JavaScript提交表单
- 提交表单后,Watir文本框输入未持续(重置为以前的文本框输入)