1

我想在任何“篡改”查询字符串的情况下添加查询字符串“检查”和日志记录。给定页面上的 Page_Init 事件是在 ASP.Net 页面生命周期中执行此操作的正确位置吗?

4

2 回答 2

1

我的一般规则是尽早做所有事情。只要查询字符串验证不依赖于页面,这甚至可能包括早在 Application.BeginRequest (甚至可能在页面加载之前发生的事件)时进行检查。

这里的问题是“你认为什么是篡改?” 无效的密钥?无效值?尝试对可能作为 XSS 攻击的一部分写入结果页面的标签进行编码?

如果不了解您要完成的工作,很难给出任何具体的建议。

编辑:要访问应用程序事件,请从“添加新项目”选项将全局应用程序类添加到您的项目中。

每个请求都会触发应用程序生命周期,而页面生命周期只是其中的一个子流程,而请求处理程序恰好是一个 aspx 文件。

EDIT2:清理查询字符串数据完全取决于您使用数据的目的。查询字符串数据的一些潜在危险用途包括:

  • SQL 命令的值:使用“参数化查询”可以在很大程度上减轻 SQL 注入。
  • 文件位置:如果服务器上的 NTFS 权限松懈,这可用于使服务器咳出硬盘上的任何文件。
  • 写入 HTML 响应的值:用户可以对标签进行编码并执行一些 JavaScript。请务必使用 Server.Encode() 或手动清理字符串。
  • ID 值:如果您使用查询字符串来存储 ID 值,用户可以用其他人替换这些值,以尝试访问有关他们不应该看到的事物的信息,例如:

    http://domain.com/somepage.aspx?userid=1343243

用户做出有根据的猜测并将其更改为:

http://domain.com/somepage.aspx?userid=0

这可能会调出管理员用户。

于 2010-12-05T03:52:42.337 回答
0

我们在项目中遵循的使用加密和解密查询字符串。我可以向您发送该课程以进行加密和解密功能。但作为参考,如果有帮助,您可以从以下 URL 开始。

http://geekswithblogs.net/casualjim/articles/64639.aspx

现在在这如果它被锤炼,它就无法被解密。您可以为其编写页面级异常并重定向到正确的错误页面。

如果您需要有关任何特定点的更多信息,请告诉我。

干杯!!!

于 2010-12-05T05:49:59.477 回答