0

可能重复:
在 JavaScript 中获取查询字符串值

我有一个日历网页。当用户打开事件时,它会打开带有如下 URL 的页面:“ http://localhost/Event.aspx?eventid=4" 然后我使用 jQuery 调用页面方法来显示一些额外的数据。我通过 $.ajax 函数发送的数据参数还包括“eventID”(显示正确事件的数据)。如果用户手动(假设通过firebug控制台)使用伪造的“eventID”执行对页面方法的jQuery调用,他会得到错误的数据。我想防止这种情况,......以一种不发送带有jQuery数据参数的eventid的方式,但以某种方式在服务器上获取eventid -side codebehind。问题是,我不能使用会话(因为用户可以打开多个事件,每个事件都有自己的 eventID)而且我也不能使用 cookie,因为它们也可能被黑客入侵。所以我试图直接在页面方法中获取正确的 eventid,使用

HttpContext.Current.Request.QueryString

但没有运气。在 Page_Load 我得到我的 eventid:

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

但我找不到将这个 eventid 值放入我的页面方法的方法。

因此,我正在寻求有关如何从 url 或 Page_Load 上定义的公共变量中获取页面方法参数值的建议。

谢谢。

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

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

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

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

4

1 回答 1

0

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

您是说您需要从用户那里获取 eventId,但您实际上并不想从用户那里获取任何东西,因为他们可以破解/更改它。

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

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

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

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