2015-04-16 17 views
7

Django'nun @sensitive_post_parameters numarasını kullanarak hassas bilgileri filtrelemeye çalışıyorum. Bu ek açıklamaların bazı özel işlevler için hazırlanmasının yeterli olacağını düşündüm, ama işe yaramıyor. SafeExceptionReporterFilter içinde kesme noktası belirledim ve yalnızca diğer kullanıcılara ve değil'dan arandığında kopuyor. Neyi kaçırıyorum ?Django'nun SafeExceptionReporterFilter'ını AdminEmailHandler'den başka bir şeyle kullanmak mümkün mü?

+0

'DEBUG = False' ayarladınız mı? – spg

+0

Evet, tabi ki, ama işaret ettiğin için teşekkürler. @aumo beni önerdi, ancak graypy GELF işleyicisi dayanıyordu ve her şeyi yeniden yazmadan filtreleme eklemek mümkün değildi –

cevap

1

SafeExceptionReporterFilter'u kullansanız bile, istisnalar yine de önemli veriler (örneğin, sunucunuzun ENV değişkenleri ve diğer çalışma zamanı verileri) içerir. Hassas verileri göstermekten kaçınmak için bu filtreyi kullanmamalısınız. Bunun yerine, kendi Exception Handler Middleware'inizi yazın ve seçici olarak (yinelemeli olarak?), Günlüklerde istediğiniz verileri alın.

istisnanın Traceback ve nasıl ihtiyaçlarınız için kullanmak nasıl elde edilebileceği konusunda sys.exc_info bakınız.

Bir CustomHandler ile giderseniz bile, belirli bir işleyici ile sınırlı olacaksınız ve bildiğim kadarıyla, üçüncü taraf işleyicileri SafeExceptionReporterFilter'u kullanmayacaktır.

+0

Doğrusu ben özel bir işleyici oluşturmak çalıştım. Hassas çalışma zamanı verileri gelince, güvenlik adam bana onları log izin vermeyeceğini biliyorum. Bilginin nasıl açıklanacağını kontrol edebilmemin tek yolu olduğu için devam edip kendi istisna kaydedici ara katmanımı yazacağımı düşünüyorum. Teşekkür ederim ! –

2

Özel durumu biçimlendirmek için django.views.debug.ExceptionReporter kullanan özel bir Handler yazabilirsiniz. ExceptionReporter ait

Örnek kullanım:

from django.views.debug import ExceptionReporter 

# exc_type, exc_value, traceback are a standard exception 
# tuple as returned by sys.exc_info 
reporter = ExceptionReporter(request, exc_type, exc_value, traceback) 
html_report = reporter.get_traceback_html() 
text_report = reporter.get_traceback_text() 

ExceptionReporter varsayılan olarak SafeExceptionReporterFilter olan DEFAULT_EXCEPTION_REPORTER_FILTER ayarıyla tanımlanan ExceptionReporterFilter kullanacaktır.

Özel bir Handler oluşturma hakkında bilgi almak için AdminEmailHandler 's implementation bir göz atın.

İlgili konular