ASP.NET页面方法 - 如何在页面方法中获取url参数值?

时间:2012-04-30 16:16:36

标签: jquery

  

可能重复:
  Get query string values in JavaScript

我有一个日历网页。当用户打开活动时,它会打开包含以下网址的页面:“http://localhost/Event.aspx?eventid=4” 然后我使用jQuery调用页面方法来显示一些额外的数据。我通过$ .ajax函数发送的数据参数还包括“eventID”(显示正确事件的数据)。 如果用户手动(让我们说通过firebug控制台)执行jQuery调用页面方法与伪造的“eventID”,他将得到错误的数据。 我想防止这种情况,...以某种方式不发送带有jQuery数据参数的eventid,但不知何故得到服务器端代码隐藏的偶数。 问题是,我不能使用会话(因为用户可以打开多个事件,每个事件都有自己的eventID),我也不能使用cookie,因为它们也可以被黑客攻击。 所以我试图直接在页面方法中使用

获得正确的eventid
HttpContext.Current.Request.QueryString

但没有运气。 在Page_Load上,我得到了我的偶数:

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

但是我无法找到一种方法将这个eventid值放入我的页面方法中。

所以,我要求建议如何从PageLoad上定义的url或公共变量获取页面方法参数值。

感谢。

编辑: 目前我使用POST发送参数,如:

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

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

但我想避免使用POST发送eventid参数,以防止黑客攻击。

1 个答案:

答案 0 :(得分:0)

这里的根本问题似乎自相矛盾。

你说你需要从用户那里获得eventId,但你实际上并不想从用户那里得到任何东西,因为他们可能会破解/改变它。

最重要的是,您不应该信任来自用户的任何输入。如果用户有权读取事件“foo”,而不是事件“bar”,那么您需要在服务器端验证这一点。

您无法阻止他们向您发送“栏”,但您可以拒绝他们在发送后查看“栏”。

至于你的代码有什么问题,data参数需要是JSON本身,而​​不是JSON字符串(删除你的引号):

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