-1

私のサイトにはログインエリアがあり、ログインしたユーザーはデータベースに保存されているテキストを変更できます。すべてのユーザーには1つ(または2つまたは3つ)のテキストがあり、それぞれに特定のIDがあります。メッセージのデータベースは次のようになります。

  | message_id | message_text | user_id | time |

Message_idとuseridは、3桁または4桁の数字です。

今まで、私はクリーンな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

PHPセッションを調べます。ユーザーが最初にログインするときに、ユーザーIDをセッションに関連付けます。次に、メッセージを投稿するときに、クライアントから渡すのではなく、セッションからのユーザーIDを使用します。ログインプロセスが安全である場合、これにより、ユーザーが他のユーザーのメッセージを更新することを回避できます。

于 2012-08-02T14:41:18.473 に答える
0

すべてのPOSTデータ処理用のクリーンなPHPソリューションがすでにある場合は、AJAXがデータをPOSTとして送信するため、同じ検証メソッドを再利用できます。検証サーバー側がなく、フォームデータと一緒にユーザーIDを送信した場合を除いて、@Briguy37が推奨するようにPHPセッションを使用することをお勧めします。投稿データを検証/クリーンアップするための良い例が必要な場合、CodeIgniterには、実装が非常に簡単なコアの非常に優れたセキュリティライブラリ部分があります。

于 2012-08-02T14:48:08.080 に答える