-1

在我的网站上,我有登录区域,登录用户可以在其中更改存储在数据库中的文本。每个用户都有一个(或 2 或 3 个)文本,每个文本都有特定的 id。以下是消息数据库的外观:

  | message_id | message_text | user_id | time |

Message_id 和 userid 是三位或四位数字。

直到现在,我一直在使用干净的 PHP 从数据库中保存/获取数据。但是现在我想使用 AJAX,这是我的调用的外观(当用户完成编辑他的消息并点击提交时):

var msg = $("#msg").val();
var usrid = $("usrid").val();
var msgid = $("#msgid").val();

$.ajax({
  type: 'POST',
  data: {
    action: 'save_message',
    message: msg,
    user_id: usrid,
    message_id: msgid
},
url: 'http://example.com/update.php',
success: function(data) {
        $('#info').html('<b>Message saved!!!</b>');
        }
})

但是,众所周知,JQuery (JS) 是客户端语言,用户可以很容易地更改 usrid、msgid 的值,并且在几次尝试后他会更改其他用户的消息。

什么是正确的解决方案?传递某种令牌,使 id 更复杂(10、20 位数字)或其他解决方案?

4

2 回答 2

0

如果您已经为所有 POST 数据处理提供了一个干净的 PHP 解决方案,您可以重复使用相同的验证方法,因为 AJAX 将数据作为 POST 提交给您。除非您没有任何验证服务器端并且您将用户 ID 与表单数据一起提交,否则我建议您按照@Briguy37 的建议使用 PHP 会话。如果你想要一个很好的例子来验证/清理发布数据,CodeIgniter 有一个非常好的安全库部分,它的核心很容易实现。

于 2012-08-02T14:48:08.080 回答
0

查看 PHP 会话。当用户首次登录时,将其用户 ID 与会话相关联。然后,当他们发布消息时,使用会话中的用户 ID,而不是从客户端传递它。如果您的登录过程是安全的,这应该避免用户更新其他用户的消息。

于 2012-08-02T14:41:18.473 回答