2016-06-16 6 views
-1

これはおそらく愚かな質問ですが、私はちょうど正しい解決策を知らない。 データベースからループ内の項目を選択しています。これらの項目は私のウェブサイトに投稿フォームとして表示されます。フォームには、特定の項目のIDを含む入力フィールドが隠されています。唯一の問題は、開発者のツール/インスペクタで誰でもこのアイデアを変更できることです。これを行うより信頼性の高い方法は何ですか?入力フィールドを隠して置き換える

私がやりたいことは、この値をデータベースに保存することです。

だから私はこのクエリを持っている:

$insert_query = mysqli_query($con," INSERT INTO `building` SET `player_id` = '".$_SESSION['user']['id']."', `building_id` = '".$_POST['building_id']."' "); 

そして、この非表示の入力フィールドを使用して:

<input type="hidden" value="<?php echo $row['building_id']; ?>" name="building_id"> 

は、どのように私は、ユーザーがIDを変更することができずに安全に近づくことができますか?

+0

このディスカッションはあなたの役に立つかもしれません:http://stackoverflow.com/questions/7559409/how-to-disable-browser-developer-tools – Namkce

+0

隠しフィールドにIDを渡すのではなく、それよりも安全なスラグ。 – sudar

+0

いいえ、それはちょうどコンソールを無効にすることです。 –

答えて

0

解決方法1:

独自のアルゴリズムにより、そのIDから生成されたハッシュとセカンダリ隠されたフィールドを追加します。 。送信元データを受け取ったら、受信したIDとハッシュコードが一致するかどうかを確認します。

解決策2:ユーザーが受信したIDにアクセスするための権限を持っている場合、サーバー側のコードチェックで

。これは、クッキーまたはセッションチェックによって行うことができます。ユーザーに許可がある場合は、IDについて心配する必要はなく、前のページとターゲットページのIDが同じであるかどうかを再度確認する必要はありません。ウェブページはユーザーが簡単に行動できるようにするだけで、純粋なコードを使用してユーザーが難しい行動を取れるようにすることができます。

0

ソースコードにIDを表示することは問題ではありません。

しかし、フォームによって送信された値が有効で、IDが操作されていないことをいつでも検証する必要があります。

これは、プレーヤーが特別なIDを送信できるかどうかを検証する必要があることを意味します。

0

私はあなたが行くのIDの最初のデータベースを照会することを確認してくださいあなたは

  • SQLインジェクション(あなたがそれをあなたの自己を感作し、確保するための話題をたくさん見つけることができます)
  • の危険にさらされていると思います挿入するには (お使いの場合にはIDが送信された保証するために、2のクエリがデータベースに存在であることを確認してください)
関連する問題