我想添加Querystring“check”并记录任何“篡改”查询字符串的情况。给定页面上的Page_Init事件是否是在ASP.Net页面生命周期中执行此操作的正确位置?
答案 0 :(得分:1)
我的一般规则是尽早完成所有事情。这甚至可能包括尽早检查Application.BeginRequest(在页面加载之前可能发生的事件),只要查询字符串验证不依赖于页面。
这里的问题是“你认为什么是篡改?”密钥无效?值无效?尝试对可能希望写入结果页面的标签进行编码,作为XSS攻击的一部分?
如果不了解更多关于你想要完成的事情,很难提出任何具体的建议。
编辑:要访问应用程序事件,请从“添加新项”选项中为项目添加全局应用程序类。
每个请求都会触发application lifecycle,而页面生命周期只是请求处理程序恰好是aspx文件时的子进程。
EDIT2 :清理查询字符串数据完全取决于您使用数据的内容。查询字符串数据的一些潜在危险用途包括:
ID值:如果您使用查询字符串来存储ID值,则用户可以替换其他人,以尝试访问有关他们不应该看到的内容的信息,例如:
用户做出有根据的猜测并将其更改为:
http://domain.com/somepage.aspx?userid=0
这可能会带来管理员用户。
答案 1 :(得分:0)
我们在项目中遵循的是使用加密和解密查询字符串。我可以发给你那个类加密和解密功能。但是为了参考,如果它有帮助,你可以从以下URL开始。
http://geekswithblogs.net/casualjim/articles/64639.aspx
现在,如果它被缓和,则无法解密。您可以为它编写页面级别异常并重定向到正确的错误页面。
如果您需要有关任何特定点的更多信息,请与我们联系。
干杯!!!