错误报告


当前第2页 返回上一页

如果要隐藏的变量也是函数参数(例如user,在下面的示例中为“ ”),并且如果修饰的函数具有多个修饰符,则请确保将其放置@sensitive_variables 在修饰符链的顶部。这样,当它通过其他装饰器传递时,它还将隐藏函数参数:

@sensitive_variables('user', 'pw', 'cc')
@some_decorator
@another_decorator
def process_info(user):
    ...
sensitive_post_parameters* parameters

如果您的一个视图接收到一个易受敏感信息影响的HttpRequest对象,则可以使用装饰器阻止这些参数的值包含在错误报告中 :POST parameterssensitive_post_parameters

from django.views.decorators.debug import sensitive_post_parameters

@sensitive_post_parameters('pass_word', 'credit_card_number')
def record_user_profile(request):
    UserProfile.create(
        user=request.user,
        password=request.POST['pass_word'],
        credit_card=request.POST['credit_card_number'],
        name=request.POST['name'],
    )
    ...

在上面的示例中,错误报告内的请求表示中,pass_word和 credit_card_number参数的值将被隐藏并用星号(**********)替换,而该name参数的值将被公开。

要在错误报告中系统地隐藏请求的所有POST参数,请不要向sensitive_post_parameters装饰器提供任何参数:

@sensitive_post_parameters()
def my_view(request):
    ...

所有POST参数被系统过滤的某些错误报告出来django.contrib.auth.views次(login, password_reset_confirmpassword_change,和add_view和 user_change_passwordauth管理员),以防止敏感信息泄漏的诸如用户密码。

自定义错误报告

All sensitive_variables()和sensitive_post_parameters()do分别用敏感变量的名称注释修饰的函数,并HttpRequest用敏感的POST参数的名称注释对象,以便以后在发生错误时可以从报告中过滤掉此敏感信息。实际的过滤是由Django的默认错误报告过滤器完成的 django.views.debug.SafeExceptionReporterFilter。**********生成错误报告时,此过滤器使用修饰符的注释将相应的值替换为star()。如果您希望为整个网站覆盖或自定义此默认行为,则需要定义自己的过滤器类,并告诉Django通过以下DEFAULT_EXCEPTION_REPORTER_FILTER设置使用它 :

DEFAULT_EXCEPTION_REPORTER_FILTER = 'path.to.your.CustomExceptionReporterFilter'

您还可以通过设置HttpRequest的exception_reporter_filter 属性,以更精细的方式控制要在任何给定视图中使用的过滤器:

def my_view(request):
    if request.user.is_authenticated:
        request.exception_reporter_filter = CustomExceptionReporterFilter()
    ...

您的自定义过滤器类需要继承 django.views.debug.SafeExceptionReporterFilter并可以覆盖以下方法:

SafeExceptionReporterFilter
SafeExceptionReporterFilter.is_active请求

返回True以激活其他方法中操作的过滤。默认情况下,如果DEBUG为,则过滤器处于活动状态False

SafeExceptionReporterFilter.get_post_parameters请求

返回过滤后的POST参数字典。默认情况下,它将敏感参数的值替换为星号(**********)。

SafeExceptionReporterFilter.get_traceback_frame_variablesrequesttb_frame

返回给定回溯帧的局部变量的过滤字典。默认情况下,它将敏感变量的值替换为star(**********)。

也可以看看

您还可以通过编写自定义的异常中间件来设置自定义错误报告 。如果您确实编写了自定义错误处理,则最好模拟Django的内置错误处理,如果DEBUG是,则仅报告/记录错误False。

详情参考: https://docs.djangoproject.com/en/3.0/



标签:Django

返回前面的内容

相关阅读 >>

Django 使用表单模板

Django 的安全性

错误报告

Django 安装

Django 的性能与优化

部署清单

Django 处理http请求

基于类的视图简介

使用asgi进行部署

Django 模板

更多相关阅读请进入《Django》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...