2015-04-16 7 views
7

मैं Django के @sensitive_post_parameters का उपयोग करके संवेदनशील सूचनाओं को फ़िल्टर करने का प्रयास कर रहा हूं। मैंने सोचा कि कुछ विशिष्ट फॉनक्शन पर इन एनोटेशन को तैयार करना पर्याप्त होगा, लेकिन यह काम नहीं करता है। मैंने SafeExceptionReporterFilter के अंदर ब्रेकपॉइंट सेट किया है और यह AdminEmailHandler और से अन्य हैंडलर से कॉल होने पर ही टूट जाता है। मैं क्या खो रहा हूँ ?क्या AdminEmailHandler से कुछ और के साथ Django के SafeExceptionReporterFilter का उपयोग करना संभव है?

+0

क्या आपने 'DEBUG = गलत 'सेट किया है? – spg

+0

हाँ जाहिर है, लेकिन इसे इंगित करने के लिए धन्यवाद। –

उत्तर

1

यदि आप SafeExceptionReporterFilter का उपयोग करते हैं, तो भी अपवादों में संवेदनशील डेटा (उदा। आपके सर्वर के एनएनवी चर और अन्य रनटाइम डेटा) शामिल होंगे।

संवेदनशील डेटा को उजागर करने से बचने के लिए, आपको इस फ़िल्टर का उपयोग नहीं करना चाहिए। इसके बजाय, अपना खुद का अपवाद हैंडलर मिडलवेयर लिखें और चुनिंदा (पुनरावर्ती?) अपने आप को वह डेटा प्राप्त करें जो आप लॉग में चाहते हैं।

अपवाद के ट्रेसबैक को कैसे प्राप्त करें और अपनी आवश्यकताओं के लिए इसका उपयोग कैसे करें, sys.exc_info देखें।

भले ही आप कस्टमहैंडलर के साथ जाएं, आप एक विशिष्ट हैंडलर तक सीमित रहेंगे और जहां तक ​​मुझे पता है, तीसरे पक्ष के हैंडलर SafeExceptionReporterFilter का उपयोग नहीं करेंगे।

+0

दरअसल, मैंने कस्टम हैंडलर बनाने की कोशिश की थी क्योंकि @ ओमो ने मुझे सुझाव दिया था, लेकिन यह ग्रेपी जीईएलएफ हैंडलर पर आधारित था और पूरी चीज को फिर से लिखने के बिना फ़िल्टरिंग को जोड़ना संभव नहीं था। संवेदनशील रनटाइम डेटा के लिए, मुझे पता है कि सुरक्षा लड़का मुझे लॉग इन करने नहीं देगा। मुझे लगता है कि मैं आगे बढ़ूंगा और अपना अपवाद लॉगर मिडलवेयर लिखूंगा क्योंकि यह एकमात्र तरीका है जिसे मैं नियंत्रित कर सकता हूं कि जानकारी का खुलासा कैसे किया जाता है। धन्यवाद ! –

2

आप कस्टम Handler लिख सकते हैं जो अपवाद को प्रारूपित करने के लिए django.views.debug.ExceptionReporter का उपयोग करता है।

ExceptionReporter की

उदाहरण उपयोग:

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() 

ExceptionReporterExceptionReporterFilterDEFAULT_EXCEPTION_REPORTER_FILTER सेटिंग जो डिफ़ॉल्ट रूप से SafeExceptionReporterFilter है द्वारा परिभाषित का प्रयोग करेंगे।

कस्टम Handler बनाने के तरीके के बारे में जानकारी प्राप्त करने के लिए AdminEmailHandler के implementation पर एक नज़र डालें।

संबंधित मुद्दे