我有一个日历网页。当用户打开活动时,它会打开包含以下网址的页面:“http://localhost/Event.aspx?eventid=4” 然后我使用jQuery调用页面方法来显示一些额外的数据。我通过$ .ajax函数发送的数据参数还包括“eventID”(显示正确事件的数据)。 如果用户手动(让我们说通过firebug控制台)执行jQuery调用页面方法与伪造的“eventID”,他将得到错误的数据。 我想防止这种情况,...以某种方式不发送带有jQuery数据参数的eventid,但不知何故得到服务器端代码隐藏的偶数。 问题是,我不能使用会话(因为用户可以打开多个事件,每个事件都有自己的eventID),我也不能使用cookie,因为它们也可以被黑客攻击。 所以我试图直接在页面方法中使用
获得正确的eventidHttpContext.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参数,以防止黑客攻击。
答案 0 :(得分:0)
这里的根本问题似乎自相矛盾。
你说你需要从用户那里获得eventId,但你实际上并不想从用户那里得到任何东西,因为他们可能会破解/改变它。
最重要的是,您不应该信任来自用户的任何输入。如果用户有权读取事件“foo”,而不是事件“bar”,那么您需要在服务器端验证这一点。
您无法阻止他们向您发送“栏”,但您可以拒绝他们在发送后查看“栏”。
至于你的代码有什么问题,data参数需要是JSON本身,而不是JSON字符串(删除你的引号):
$.ajax({
url: "Event.aspx/getEventData",
type: "POST",
data: { eventid : myEventId}
...
});