【发布时间】:2014-10-17 05:33:50
【问题描述】:
如果在 Page_Load 事件期间调用 Response.Redirect("/"),恶意用户可以访问页面的内容(在重定向之前),比如 html 本身?我正在尝试将不允许的用户重定向到 default.aspx 页面,但我不确定以这种方式使用代码是否存在漏洞。
【问题讨论】:
-
是的,可以有,这取决于你如何使用它。我在this SO answer 中进行了解释,并提到了如何忽略重定向并查看页面内容,就像您关心的那样。即使您当前对
Redirect的使用不会打开此漏洞,但对该函数中的参数进行简单更改,也可以并且将会。 -
@MikeSmithDev 出于测试目的,我在页面中添加了一个 Page_Render 事件并进行了调试。当我使用默认的 Response.Redirect(第二个参数为隐式 true)时,不会调用 Page_Render 事件。所以,一切都是安全的,对吧?没有调用 Page_Render = 用户没有 Html。
-
嗯,它是“安全的”,但不是最优的。有一天,如果有人试图摆脱您的
Response.Redirect(url)导致的ThreadAbortException,并添加false作为第二个参数,那么不,它可能不安全。我会继续并立即修复它(使其安全,并且不会在重定向时引发异常)。 -
@MikeSmithDev 使用 Response.Redirect(url, false) 修复的任何提示?我已经知道将 true 作为参数传递会导致异常,以及这对性能有何不利影响。我必须做什么?销毁缓冲页面?
-
您可以使用
visible="false"将页面包装在一个div 中,并且仅在您不重定向时才显示它。因此,如果他们绕过 302,他们看到的只是一个空白页面。
标签: c# asp.net webforms response.redirect