0

次のようにセットアップするための最良の方法について疑問に思っていました。

ユーザーがデータの追加を完了すると、非常に長くなる可能性がある動的フォームがあります。私がセットアップしたいと思っていたのは、彼らが持っているデータをデータベースに保存するバックグラウンド プロセスです。

私がセットアップしたのは、質問が保存された状態にあるかどうかを確認し、そうでない場合は保存する質問のリストに追加する settimer 関数でした。次に、phpを使用してデータベースに投稿するajax呼び出しをトリガーします。これが初めて発生すると、ajax は送信の ID を返すため、フォームは送信先を認識します。

set timer 関数が 2 回目に実行されると、この ID が渡されます。

私の最大の問題は、ユーザーにテーブル ID を知られたくないことです。私は、誰かが JavaScript をいじって、その結果を他の ID に簡単に送信できると考えていました。

これを達成するためのより良い方法があるかどうか疑問に思っていましたか?またはいくつかの例でさえありますか?

ありがとう

4

1 に答える 1

2

一般的に言えば、おそらくサーバー側のIDを$_SESSION変数に保持し、クライアントの近くにIDを配置しないようにする必要があります。UNIQUEあるいは、フォームには、何らかのインデックスに基づいて関連するレコードを判別できるように、十分に識別可能な情報が含まれている場合があります。

ただし、必要に応じて、暗号化認証を追加して、ユーザーがIDを変更していないことを証明することもできます。たとえば、ID自体に加えて、何らかの秘密と連結されたIDの安全なハッシュをクライアントに返します。クライアントがIDとそのハッシュの両方をサーバーにポストバックするとき、ハッシュの再計算されたバージョンと比較して、秘密を知っている人(つまりあなた)だけがクライアントにそのIDを提供できたかどうかを確認できます。

より高度な攻撃を打ち負かすために、いくつかの塩を追加することをお勧めします。

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

次に、ハッシュ、ID 、およびソルトをクライアントに送信します。3つすべてが検証のために返されます。

于 2012-05-14T10:44:21.577 に答える