2011-02-11 14 views
0

ユーザーが緑色のボタンをクリックすると、これを検出して$ UserIDと$ ActivityIDをサーバーに渡してデータベースに格納するためのJavascriptが必要です。Javascriptはどのようにしてユーザー情報に安全にアクセスできますか?

しかし、JSがこの情報を安全に取得してサーバーに送信する最も良い方法は何ですか?私は、HTML内の変数を隠してきた :

HTML:

<div class="green-button">Add it</div> 
<input type="hidden" class="u" value = " <?php $UserID ?> "/> 
<input type="hidden" class="a" value = " <?php $ActivityID ?> "/> 

のjQuery:

jQuery('.green-button').click(function(event){ 
var $UserID = jQuery(this).siblings('input').hasClass('u').attr('value'); 
var $ActivityID = jQuery(this).siblings('input').hasClass('a').attr('value'); 
// rest of the code... 

しかし、これは安全なようではありません。 Firebugを使用してHTMLを変更し、ボタンをクリックするとどうなりますか? DBaseにゴミが書き込まれませんか?

ヒントをお願いします。

+0

を明確にする

$(document).ready() { var store = []; $('input').each(function() { store.push({ this.className : this.value }); $(this).remove(); }); // now all you data save in store hash array with pairs: { class : value } $('.green-button').click(function(event){ ...send values from "store" variable... }); } 

前述したように、それはない本物のセキュリティ、ほんの少しの確実なのです.. $ユーザーIDと$のActivityIDは、ちょうど2つの数字です。したがって、誰かが隠れた$ UserIDをHTMLの "1"から "2"に変更すると、サーバーの検証によってこれがキャッチされません。どうすればこの事件を防ぐことができますか? – JMan

答えて

1

まあ、あなたが探しているセキュリティの種類として説明する必要があります。ネットワーク経由で送信されたデータを保護することを検討していますか?もしそうなら、あなたはSSL証明書を選択し、その上にデータを送信する必要があります。

しかし、自分のマシンから送信されたパケットを誰かが読んでいる場合、どのデータが送信されているのかを簡単に把握できるため、そのような方法はありません。以上。

+0

はい私はRalphに同意します。サーバー上のデータを検証し、ユーザーから送信されたものを信頼しないでください。 – Ankit

+0

上記のコメントをご覧ください。この問題は、セキュリティ上の問題ではありません。問題は、誰かが隠れた$ UserIDの値を別の有効な値に変更し、それをサーバーに戻すことができるということです。どうも。 – JMan

+1

これで対処する方法の1つは、PHPでセッション変数を使用することです。<?php $ _SESSION ['u'] = $ UserID; ?> 'この値はユーザーが簡単にアクセスできません。対応するsessionIDのみがユーザーのマシンにCookieとして保存されます。 – Ankit

1

サーバー側のスクリプト言語を使用して、ブラウザから渡された内容を検証します。ウェブブラウザで起こることは、サーバによって信頼されるべきではありません。したがって、user = "johnSmith"が渡され、activity = "save"がチェックされている場合、JohnSmithからページが送信されたことを確認します(おそらくセッションオブジェクトにユーザーを格納しています)。また、「save」が有効なアクションであることを確認します。

0

ドキュメントの読み込み後に入力値を取得し、いくつかのjavascriptオブジェクトに保存し、DOMから入力を削除し、ボタンをクリックしてオブジェクトから値を送信することができます。

関連する問題