سؤال

لأسباب واضحة إلى حد ما، أود تحديد أفضل طريقة لإزالة القبض على Auth_Password من إيماه. ما هي أفضل طريقة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

منذ المهد مفتوح المصدر، قمت بتعديل ملف error.cs مثل ذلك. داخل الخطأ Custructor of Error.cs (حول السطر 126)، أضفت هذا:

_serverVariables.Remove(AUTH_PASSWORD);
//AUTH_PASSWORD = const string = "AUTH_PASSWORD" AND SET ELSEWHERE

نصائح أخرى

لقد تمكنت من القيام بذلك دون تعديل مصدر المهد: http://www.kipusoep.nl 21/01/06/umbraco-elmah-with-sql-ce-4-0-and-Authentication-part-2/

أنا فقط واجهت نفس الشيء؛ حلها باستخدام ما يلي:

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);
        }
    }
}

وتحديث وحدة errorlog في web.config، التكوين / system.webserver / وحدات إلى:

<add name="ErrorLog" type="XXXX.ErrorLogModule" preCondition="managedHandler" />

هذا سوف يحل المشكلة دون رحلة ذهاب وعودة. ليست مشكلة في حالة استخدام كلمة المرور لاحقا من الطلب الوارد حيث يظهر مصدر إلمح أنه يأخذ نسخة.

أدرك أن هذا متأخرا بعض الشيء استجابة لما ورد أعلاه، ولكن يبدو أن المشكلة قد تم تصحيحها في إيماه الحالية لآسيا (آسيا)، وليس للحصول على حزمة Elmah.mvc Nuget.

لم أكن قادرا على الحصول على إجابة Bidchinic Birch، لأن السياق هو إعادة تأمين. بدلا من ذلك، اشتقت من errorlog (في حالتي، mysqlerrorlog) وهل هناك:

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);
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top