2012-04-30 36 views
0

可能性の重複:
Get query string values in JavaScriptASP.NETページメソッド - ページメソッド内でurlパラメータ値を取得する方法は?

私はカレンダーのWebページを持っています。ユーザーがイベントを開くと、 "http://localhost/Event.aspx?eventid=4" のようなURLのページが開きます。次に、jQueryを使用してページメソッドを呼び出して余分なデータを表示します。 $ .ajax関数で送信しているデータパラメータには、正しいイベントのデータを表示するための "eventID"も含まれています。 ユーザが手作業で(firebugコンソールから)、偽の "eventID"を使ってjQueryのcall to pageメソッドを実行すると、彼は誤ったデータを取得します。 私はそれを防止したいと思います... jQueryのデータパラメータでeventidを送信しない方法で、サーバー側のコードビハインドでeventidを何とか取得します。 私はセッションを使用できません(ユーザーが複数のイベントを開くことができ、それぞれが自分のイベントIDを持つことができるため)。また、クッキーも使用できないため、ハッキングする可能性もあります。 だから私は

HttpContext.Current.Request.QueryString 

が、運とを使用して、ページメソッド内で直接正しいイベントIDを取得しようとしていました。 Page_Loadで は、私は私のイベントIDを取得:

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

が、私は私のページのメソッドにこのイベントIDの値を取得する方法を見つけることができません。

したがって、Page_Loadで定義されたURLまたはパブリック変数からページメソッドのパラメータ値を取得する方法のアドバイスをお願いしています。

ありがとうございました。

EDIT: 現在、私のようなパラメータを送信するためにPOSTを使用しています:

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

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

をしかし、私はハッキングを防ぐために、POSTでイベントIDパラメータを送信しないようしたいと思います。

+0

方法:

限り、何があなたのコードに問題があるとして、データパラメータはJSON自体ではなく、JSONの文字列(あなたの引用符を除く)である必要がありますか?この場合、あなたのメソッドを呼び出すためにサーバーにポストすることができるページに隠しフィールドを持つことができます... – Sunny

+0

この質問はあなたを助けるかもしれません:http://stackoverflow.com/questions/901115/get-query-string -values-in-javascript –

+0

参考までに、POSTリクエストはGETリクエストよりも悪意のあるユーザーから安全ではなく、その逆もあります。 – Jeff

答えて

0

根本的な質問はここに矛盾するようです。

あなたはイベントIDをユーザーから取得する必要があると言っていますが、ハッキング/変更する可能性があるため、実際には何も取得しないようにしています。

結論は、ユーザーからの入力を信頼してはならないということです。ユーザーがイベント "foo"を読むが、イベント "bar"は読み取れない場合は、サーバー側でこれを確認する必要があります。

「バー」を送信できないようにするには何もできませんが、送信後は「バー」を表示することを拒否できます。 POSTではなくGETを使用する方法について

$.ajax({ 
url: "Event.aspx/getEventData", 
type: "POST", 
data: { eventid : myEventId} 
... 
}); 
関連する問題