检查是否已被篡改的“正确”位置?
-
08-10-2019 - |
题
我想添加Querystring“检查”和记录。给定页面上的page_init事件是在ASP.NET页面生命周期中做到这一点的正确位置吗?
解决方案
我的一般规则是尽早做所有事情。只要查询字符串验证不依赖于页面依赖性,这甚至可能包括最早的检查(即甚至加载页面加载之前发生的可能发生的事件)。
这里的问题是“您认为要篡改什么?”无效的钥匙?无效的值?试图编码可以作为XSS Attack的一部分写入最终页面的标签?
很难在不了解您要完成的工作的情况下提供任何具体的建议。
编辑: :要访问应用程序事件,请添加一个 全球应用程序类 从“添加新项目”选项到您的项目。
每个请求都会触发 应用生命周期, ,并且页面生命周期只是一个子过程,当时请求处理程序恰好是ASPX文件时。
Edit2: :清洁查询字符串数据完全取决于您使用的数据的目的。查询字符串数据的一些潜在危险用途包括:
- SQL命令的值: :通过使用“参数化查询”,可以在很大程度上减轻SQL注入。
- 文件位置: :如果服务器上的NTFS权限宽松,则可以用来使服务器咳嗽硬盘上的任何文件。
- 写入HTML响应中的值: :用户可以编码标签并执行一些JavaScript。确保使用server.encode()或手动清洁字符串。
ID值: :如果您使用查询字符串存储ID值,则用户可以在尝试访问他们不应该看到的信息时与其他人替换那些值,其中可能是:
用户做出了有根据的猜测,并将其更改为:
http://domain.com/somepage.aspx?userid=0
这可能会带来管理用户。
其他提示
我们在项目中使用加密和解密Querystring所遵循的内容。我可以向您发送该类以进行加密和解密功能。但是,对于参考,您可以从以下URL开始。
http://geekswithblogs.net/casualjim/articles/64639.aspx
现在,如果它得到了纠正,则无法解密。您可以为其编写页面级别异常,并重定向到正确的错误页面。
让我知道您是否需要有关任何特定点的更多信息。
干杯!!!
不隶属于 StackOverflow