2017-05-17 4 views
4

クライアントにレコードを更新するには、クライアントにそのレコードのUnique_idを表示しないで、クライアントからデータベースへのレコードをどのように更新しますか?ユーザーにunique_Idを表示せずにクライアントからサーバーへレコードを更新する方法

私はdisplay:noneプロパティでユーザーに表示すると、その特定のunique_idを検査していくつかの乱数に変更することができます。これは、他のレコードのunique_idと一致する可能性があります。間違ったレコード)。

+0

あなたは正確に何をしたいですか、接続されている人は他の情報を編集するか、自分の情報だけを編集する能力を持っています –

+0

また、あなたが使用しているバックエンドlangageを指摘することができます –

答えて

0

そのレコードのUnique_idによって、私はあなたがそのテーブルの主キーについて話していると仮定します。クライアント側でデータベース操作を処理する必要はありません。あなたがしなければならないのは、クライアントからバックエンドスクリプト(node.js、PHPなど)にデータを送信し、バックエンドコードがすべてのデータベース操作を処理できるようにするだけです。

EDIT:

明確にあなたの問題を理解した後、私は一つの可能​​な解決策を考えることができます。あなたがメンテナンスしているセッションがある場合(ユーザがログインする必要がある)、ユーザがクライアント側から自分のIDを送信すると、自分のIDのコピーをサーバに保存してサーバ側で確認することができます。

+0

私は彼女の問題は、ユーザーがIDを変更することができますし、彼女はそのケースを処理できなかった彼女のバックエンドにあると思うと思います – MSekrst

+0

exacty @MSekrst –

+0

まあすべてが行う必要がありますフォームを介してPOSTリクエストを通してバックエンドに渡し、バックエンドスクリプトが残りを処理するようにします。バックエンド側では、現在のユーザーにその行の値を変更する権限があるかどうかを確認するだけです。 – codelyzer

0

フロントエンドのユーザーから実際のIDを隠す場合は、暗号化してサーバーに戻すことで解読できます。

あなたが牽引possibiltiesがあります:ユーザーが唯一の彼の情報を編集する必要がある場合ということ

+0

もう一つの可能​​な方法@MSekrst、またはこれはすべてのやり方ですか? –

+0

あなたは、あなたがeaslyそれを変更し、他のIDを推測することはできません知っている問題でデータベース設計を変更することができます。これは、IDをハッシュすること、ランダムな文字列を使用することなどによって行うことができます。 – MSekrst

0

注彼はそれを変更するかどうか

  1. クライアント側からIDを使用あなたがバックエンドにidを保存することができますし、編集を開始する前に、それがidセッションの保存値と同じであれば、sended idをチェックします。接続されたユーザー情報を取得するためのクエリを作成し、Idが等しいかどうかを確認します。一致する場合は編集権限を返します。 ID使用せず

  2. をので、この場合には、最初と同じことを情報を送信した後、あなたはすでにセッションにIDを保存した場合、ちょうど編集を行うには、いない場合は、あなたがする必要がありますユーザー情報を取得し、最初のクエリから返されたIDを使用して更新を行います。だから

両方のアクションは同じですが、私は、クライアントが接続されている場合、セッション中にIDを保存するためにrecomandので、あなたは、この最後の検索を行うことなく、直接、更新クエリを作成し、

クライアントがIDセッションのvarを使用して更新を行い、クライアント側でidを設定しないと、セッション内のSotre ID。

3

良い質問だと、クライアント側からのIDの改ざんを防止するためのアプローチは次のように考えられます。

基本的には、アイデアは、単に塩/キー+レコードのハッシュであるトークンを作成することですID。

アルゴリズムのステップ:

レコードID(SELECT)のクエリから。

salt + Idでトークンを作成し、後で使用するために保存します。

がクライアント側で更新のために送信された場合、このトークンをフォームデータに隠しフィールドとして含めます。

ユーザーがフォーム submissionを処理するスクリプトにデータを投稿すると、送信されたトークンがサーバーに一時的に格納されたトークンである場合に更新を許可できます。

if(tokenSavedOnServer != tokenCameFromClient) 
{ 
    // Id has been tampered. Cancel update request. 
} 

これはまた、トークンにタイムスタンプを含めることによって、より堅牢製とタイムスタンプが10分または何時間よりも古いではないかどうかを確認することができます。

このように、別のIDのために入ってくるリクエストは、同じトークン文字列を持たないため、UPDATEにつながることはありません。

関連する問題