【问题标题】:Save form as progressed with Ajax + JQuery + MySql + PHP使用 Ajax + JQuery + MySql + PHP 将表单保存为进度
【发布时间】:2012-05-21 20:08:45
【问题描述】:

我想知道设置关注的最佳方式。

我有一个动态表单,一旦用户完成添加数据,它可能会变得很长。我希望设置的是一个后台进程,将他们拥有的数据保存到数据库中。

我设置的是一个 settimer 函数,它会检查问题是否处于已保存状态,如果没有,则将其添加到要保存的问题列表中。然后它会触发一个使用 php 发布到我的数据库的 ajax 调用。第一次发生这种情况时,ajax 将返回提交的 id,以便表单知道将这些发布到哪里。

set timer 函数第二次运行时会传递这个 id。

我最大的问题是我不希望用户知道表 ID。我只是在想有人可以弄乱 javascript 并很容易地将他们的结果提交给其他 id。

我只是想知道是否有更好的方法来实现这一点?甚至是一些例子?

谢谢

【问题讨论】:

    标签: php jquery mysql ajax forms


    【解决方案1】:

    一般来说,您应该将服务器端的 ID 保存在 $_SESSION 变量中,并且永远不要让它靠近客户端。或者,表单可能包含足够的可识别信息,以便能够根据某些UNIQUE 索引确定相关记录。

    但是,如果您愿意,您还可以添加一些加密身份验证来证明该 ID 未被用户更改。例如,除了 ID 本身之外,还向客户端返回 ID 的安全散列和一些秘密;当客户端将 ID 和该哈希都发回您的服务器时,您可以与重新计算的哈希版本进行比较,以检查是否只有知道秘密的人(即您)才能向客户端提供该 ID。

    为了击败更复杂的攻击,您可能需要添加一些盐:

    $salt = some_random_string();
    $hash = md5( md5($secret) . md5($id) . md5($salt) )
    

    然后向客户端发送哈希、ID 盐;所有这三个它都会返回给您进行验证。

    【讨论】:

    • 这是一个完美的主意!感谢那。我的另一个想法是相似的。使用浏览器指纹。谢谢大家
    • 我可以只发回哈希并存储 id 和哈希服务器端吗?以这种方式识别用户是否存在安全漏洞?
    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2016-04-22
    • 1970-01-01
    相关资源
    最近更新 更多