gpt4 book ai didi

security - 如何保护 Umbraco 中的 ELMAH Web 控制台?

转载 作者:行者123 更新时间:2023-12-04 05:04:51 27 4
gpt4 key购买 nike

如何请求 /elmah.axd 限于 Umbraco 管理员用户 .

据我了解,Umbraco 成员资格和角色提供者适用于 Umbraco 成员,但不适用于用户——Umbraco 用户帐户似乎没有可在 web.config 中使用的用户名或角色(例如“管理员”),像这样:

<location path="elmah.axd">
<system.web>
<authorization>
<allow roles="Admins" />
<deny users="*" />
</authorization>
</system.web>
</location>

这是在其他 ASP.Net 应用程序中保护 ELMAH 的推荐方法。

有人在 Umbraco 做过这个吗?

最佳答案

我通过创建一个 HTTP 模块来拦截对 elmah.axd 的请求,并仅授权 Umbraco 管理员查看它,从而解决了这个问题。下面是模块代码:

namespace MyNamespace
{
using System;
using System.Configuration;
using System.Web;
using System.Web.Configuration;

using umbraco.BusinessLogic;

public class ElmahSecurityModule : IHttpModule
{
private HttpApplication _context;

public void Dispose()
{
}

public void Init(HttpApplication context)
{
this._context = context;
this._context.BeginRequest += this.BeginRequest;
}

private void BeginRequest(object sender, EventArgs e)
{
var handlerPath = string.Empty;

var systemWebServerSection = (HttpHandlersSection)ConfigurationManager.GetSection("system.web/httpHandlers");

foreach (HttpHandlerAction handler in systemWebServerSection.Handlers)
{
if (handler.Type.Trim() == "Elmah.ErrorLogPageFactory, Elmah")
{
handlerPath = handler.Path.ToLower();
break;
}
}

if (string.IsNullOrWhiteSpace(handlerPath) || !this._context.Request.Path.ToLower().Contains(handlerPath))
{
return;
}

var user = User.GetCurrent();

if (user != null)
{
if (user.UserType.Name == "Administrators")
{
return;
}
}

var customErrorsSection = (CustomErrorsSection)ConfigurationManager.GetSection("system.web/customErrors");

var defaultRedirect = customErrorsSection.DefaultRedirect ?? "/";

this._context.Context.RewritePath(defaultRedirect);
}
}
}

...和 ​​web.config:
<configuration>
<system.web>
<httpModules>
<add name="ElmahSecurityModule" type="MyNamespace.ElmahSecurityModule" />
</httpModules>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="ElmahSecurityModule" type="MyNamespace.ElmahSecurityModule" />
</modules>
</system.webServer>
</configuration>

关于security - 如何保护 Umbraco 中的 ELMAH Web 控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439698/

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