Aus naheliegenden Gründen möchte ich den besten Weg identifizieren, um das Auth_Password von der Erfassung durch ELMAH zu entfernen. Was ist der beste Weg, dies zu tun?So entfernen Sie "Auth_Password" aus den ELMAH-Protokollen
Antwort
Da ELMAH Open Source ist, habe ich die Error.CS Datei so modifiziert. Innerhalb des Fehler cunstructor von Error.CS (etwa Zeile 126), habe ich dies:
_serverVariables.Remove(AUTH_PASSWORD);
//AUTH_PASSWORD = const string = "AUTH_PASSWORD" AND SET ELSEWHERE
Ich habe dies geschafft zu tun, ohne die ELMAH Quelle zu ändern: http://www.kipusoep.nl/2012/01/06/umbraco-elmah-with-sql-ce-4-0-and-authentication-part-2/
ich die gleiche Sache nur begegnet ; mit dem folgenden gelöst:
using Elmah;
using ElmahErrorLogModule = Elmah.ErrorLogModule;
namespace XXXX
{
public class ErrorLogModule : ElmahErrorLogModule
{
protected override void OnErrorSignaled(object sender, ErrorSignalEventArgs args)
{
// Remove password from the server variables being serialized
args.Context.Request.ServerVariables.Remove("AUTH_PASSWORD");
//TODO: remove session id, cookie too?
base.OnErrorSignaled(sender, args);
}
}
}
Und das ErrorLog Modul in web.config aktualisiert, Konfiguration/system.webServer/Module:
<add name="ErrorLog" type="XXXX.ErrorLogModule" preCondition="managedHandler" />
das Problem ohne eine zweite Rundfahrt Dies wird lösen. Kein Problem, wenn das Passwort später von der eingehenden Anfrage verwendet wird, wie die Elmah-Quelle zeigt, dass es eine Kopie braucht.
Ich weiß, dies ist ein bisschen spät als Reaktion auf die oben genannten, aber das Problem scheint in der aktuellen Elmah für ASP korrigiert worden, und nicht für Elmah.Mvc nugget Paket.
Ich konnte @ Dominique Birchs Antwort nicht funktionieren, weil der Kontext schreibgeschützt ist. Stattdessen abgeleitet ich von der ErrorLog (in meinem Fall, MySqlErrorLog) und habe es dort:
public class FilteringMySqlErrorLog : MySqlErrorLog
{
static readonly string[] _stripSearch = new[] { "password", "cardnumber", "ccnumber", "cvv" };
public FilteringMySqlErrorLog(IDictionary config)
: base(config)
{ }
public override string Log(Error error)
{
error.ServerVariables.Remove("AUTH_PASSWORD");
foreach (string key in error.Form.AllKeys.ToList())
{
if (_stripSearch.Any(x => key.IndexOf(x, StringComparison.InvariantCultureIgnoreCase) != -1))
error.Form.Remove(key);
}
return base.Log(error);
}
}
So sehr ich auch lieben würde ich zu billig fühlen würde. –