0

重複の可能性:
JavaScript でクエリ文字列値を取得する

カレンダーの Web ページがあります。ユーザーがイベントを開くと、「http://localhost/Event.aspx?eventid=4 」のような URL のページが開きます。" 次に、jQuery を使用してページ メソッドを呼び出し、追加のデータを表示します。$.ajax 関数を介して送信するデータ パラメータには、"eventID" (正しいイベントのデータを表示するため) も含まれます。ユーザーが手動で行う場合 (たとえば、 firebug コンソールを介して) 偽の「eventID」を使用してページ メソッドへの jQuery 呼び出しを実行すると、彼は偽のデータを取得します.私はそれを防ぎたいです... jQuery データ パラメーターで eventid を送信しない方法で、サーバー上で何らかの方法で eventid を取得します-side codebehind 問題は、セッションを使用できないことです (ユーザーが複数のイベントを開くことができ、それぞれに独自の eventID があるため)、Cookie も使用できないため、それらもハッキングされる可能性があります。を使用して、ページメソッド内で直接正しいeventidを取得しようとしていました

HttpContext.Current.Request.QueryString

しかし運がない。Page_Load で、次のようにイベント ID を取得します。

EventID = Page.Request.QueryString("eventid")

しかし、この eventid 値をページ メソッドに取得する方法が見つかりません。

そこで、Page_Load で定義された url または public 変数からページ メソッドのパラメーター値を取得する方法についてアドバイスを求めています。

ありがとう。

編集:現在、POSTを使用して次のようなパラメーターを送信しています:

var myEventId = $("#hiddenField").val();

$.ajax({
url: "Event.aspx/getEventData",
type: "POST",
data: "{'eventid':myEventId}"
...
});

しかし、ハッキングを防ぐために、POST で eventid パラメータを送信することは避けたいと思います。

4

1 に答える 1

0

ここでの根本的な質問は、それ自体矛盾しているようです。

ユーザーから eventId を取得する必要があると言っていますが、ユーザーがハッキング/変更する可能性があるため、実際にはユーザーから何も取得したくありません。

肝心なのは、ユーザーからの入力を信頼してはならないということです。ユーザーがイベント「foo」を読み取るアクセス権を持っているが、イベント「bar」を読み取れない場合は、サーバー側でこれを確認する必要があります。

彼らがあなたに「バー」を送信するのを防ぐために実際に何もすることはできませんが、彼らが送信した後に「バー」を表示することを拒否することはできます.

コードの何が問題なのかというと、データ パラメータは JSON の文字列ではなく、JSON 自体である必要があります (引用符を削除してください)。

$.ajax({
url: "Event.aspx/getEventData",
type: "POST",
data: { eventid : myEventId}
...
});
于 2012-04-30T18:11:24.763 に答える