Tôi đang cố lọc ra các thông tin nhạy cảm bằng cách sử dụng số @sensitive_post_parameters
của Django. Tôi nghĩ rằng việc thêm các chú thích này vào một số fonctions cụ thể sẽ là đủ, nhưng nó không hoạt động. Tôi đã đặt điểm ngắt bên trong SafeExceptionReporterFilter
và chỉ ngắt khi được gọi từ các trình xử lý khác AdminEmailHandler
và không phải là. Tôi đang thiếu gì?Có thể sử dụng tính năng SafeExceptionReporterFilter của Django bằng một cái gì đó khác với AdminEmailHandler không?
Trả lời
Ngay cả khi bạn sử dụng SafeExceptionReporterFilter
, ngoại lệ sẽ vẫn chứa dữ liệu nhạy cảm (ví dụ: biến ENV của Máy chủ và dữ liệu thời gian chạy khác).
Để tránh hiển thị dữ liệu nhạy cảm, bạn không nên sử dụng bộ lọc này. Thay vào đó, hãy viết phần mềm Middleware Handler Middleware của riêng bạn và chọn lọc (đệ quy?) Tìm nạp dữ liệu bạn muốn trong nhật ký.
Xem sys.exc_info
để biết cách truy xuất dấu vết của ngoại lệ và cách sử dụng theo dõi nhu cầu của bạn.
Thậm chí nếu bạn đi với CustomHandler bạn sẽ bị giới hạn với một trình xử lý cụ thể và theo như tôi biết, các bên xử lý bên thứ ba sẽ không sử dụng SafeExceptionReporterFilter
.
Thật vậy, tôi đã cố gắng tạo một trình xử lý tùy chỉnh như @aumo đã gợi ý cho tôi, nhưng nó dựa trên bộ xử lý GELF màu xám và không thể thêm bộ lọc mà không viết lại toàn bộ. Đối với dữ liệu thời gian chạy nhạy cảm, tôi biết anh chàng bảo mật sẽ không cho phép tôi đăng nhập chúng. Tôi nghĩ rằng tôi sẽ đi trước và viết middleware logger ngoại lệ của riêng tôi vì đó là cách duy nhất tôi có thể kiểm soát cách thông tin được tiết lộ. Cảm ơn bạn ! –
Bạn có thể viết Handler tùy chỉnh sử dụng django.views.debug.ExceptionReporter
để định dạng ngoại lệ.
Ví dụ sử dụng 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()
ExceptionReporter
sẽ sử dụng ExceptionReporterFilter
xác định bởi các thiết lập DEFAULT_EXCEPTION_REPORTER_FILTER
mà theo mặc định là SafeExceptionReporterFilter
.
Hãy xem AdminEmailHandler
's implementation để biết thông tin về cách tạo tùy chỉnh Handler
.
- 1. Có thể biên dịch hạt nhân Linux bằng một cái gì đó khác với gcc
- 2. Có thể có class.property = x trả về một cái gì đó khác với x?
- 3. Có thể để Observable.Buffer trên một cái gì đó khác với thời gian
- 4. Hibernate một đến nhiều bằng cách sử dụng một cái gì đó khác với một khóa chính
- 5. Có thể đa xử lý một hàm trả về một cái gì đó bằng Python không?
- 6. ElasticSearch hoặc Couchbase hoặc một cái gì đó khác
- 7. Điều gì có nghĩa là "sử dụng ODR" một cái gì đó?
- 8. một cái gì đó sai trong chương trình của tôi bằng cách sử dụng GData xmlsupport
- 9. Chọn các phần tử có thuộc tính bắt đầu bằng một cái gì đó trong XPath
- 10. Sự khác biệt giữa vị trí ruột kết trong: cái gì đó và cái gì đó:
- 11. Tôi có thể gedit một cái gì đó trong Mac của thiết bị đầu cuối
- 12. globals Polymer thuộc tính một cái gì đó kỳ lạ
- 13. Có sử dụng một cái gì đó giống như MvcContrib Grid một bước lùi trong khả năng đọc mã?
- 14. ServiceStack.net tương đương với Java (hoặc cái gì đó có thể làm việc với ServiceStack)?
- 15. Tôi có thể sử dụng tính năng InSequence của moq() bằng MockBehavior.Loose không?
- 16. Sử dụng Moq.It.IsAny để kiểm tra chuỗi bắt đầu bằng một cái gì đó
- 17. Tôi cần tăng tốc một chức năng. Tôi có nên sử dụng cython, ctypes hay cái gì khác không?
- 18. Làm thế nào để ghi lại một cái gì đó khác với Linear PCM trên iPhone
- 19. Một lỗi Resharper có thể có hoặc tôi chỉ thiếu một cái gì đó tinh tế?
- 20. Kiểm tra xem chuỗi có kết thúc bằng một cái gì đó với Java (Regex)
- 21. SortedList được lập chỉ mục bởi một cái gì đó khác với Khóa
- 22. Liệu python có một cái gì đó giống như C++ 's bằng cách sử dụng từ khóa?
- 23. Trong đó có cái gì đó tương tự như Thread.yield của Java() bằng Python? Điều đó thậm chí có ý nghĩa không?
- 24. Bỏ trống vào một cái gì đó?
- 25. Chọn sáng bóng chuyển đến tabPanel khác bằng nút hành động hoặc một cái gì đó
- 26. Tôi có nên sử dụng tính năng Quản trị của Django không?
- 27. Các chức năng có nên luôn trả về một cái gì đó (Javascript)
- 28. Làm thế nào để viết một que diêm không bằng một cái gì đó
- 29. Không thể sử dụng tính năng InfiniteScroll của ui-grid
- 30. regex để kết hợp một cái gì đó nếu nó không được bắt đầu bởi cái gì khác
Bạn đã đặt 'DEBUG = False' chưa? – spg
Có, nhưng cảm ơn bạn đã chỉ ra. –