gpt4 book ai didi

c# - MVC3 应用重定向到 ReturnUrl=%2f

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:41 25 4
gpt4 key购买 nike

我在我的 MVC3 网络应用程序中使用表单例份验证。我在根 web.config 中添加了以下内容:

<authentication mode="Forms">
<forms name=".FormsAuth" loginUrl="~/Home/Index" timeout="2880" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>

当我启动我的应用程序时,它会重定向到 http://localhost:22888/Home/Index?ReturnUrl=%2f相反 http://localhost:22888 .如果我删除行 <deny users="?">然后它正确重定向,然后 Context.User.Identity.Name登录后没有任何值(value)。

请帮忙。

最佳答案

看看Securing your ASP.NET MVC 4 App and the new AllowAnonymous Attribute .

You cannot use routing or web.config files to secure your MVC application (Any Version). The only supported way to secure your MVC application is to apply the Authorize attribute ...

Quote

MVC uses routes and does not map URLs to physical file locations like WebForms, PHP and traditional web servers. Therefore using web.config will definitely open a security hole in your site.

The product team will have a communication if this changes in the future, but for now it is without exception the rule.

例子:

从默认的 ASP.Net MVC 项目(互联网/内部网)开始。

编辑 web.config 添加:

<location path="Home">
<system.web>
<authoirzation>
<deny users="*">
</authoirzation>
</system.web>
</location>

运行该项目,默认情况下您将使用Default 路由/Home/Index 并且您会看到内容,只需绕过web.config 而不更改默认值模板。为什么?因为 ASP.Net 管道正在将请求的 URL 与 web.config 中指定的位置进行比较。但是,在管道中执行授权事件之后,路由发生(默认路由或自定义路由)并允许访问假定的限制区域。

此外,任何 MVC Redirect() 也将绕过相同的安全措施,因为路由再次发生在授权管道事件之后。

When I launch my app, it redirects to http://:22888/Home/Index?ReturnUrl=%2f instead http://:22888.

如果您使用默认模板,授权存储 returnUrl 并重定向回 /Home/Index,值为 %2f/。您可以更新 AccountsController 中的 RedirectToAction 代码,以便在 / 时不附加 returnUrl

关于c# - MVC3 应用重定向到 ReturnUrl=%2f,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com