• django过滤敏感信息装饰器


    过滤敏感信息

    错误报告对于调试错误确实很有帮助,因此通常记录尽可能多的有关这些错误的相关信息非常有用。例如,默认情况下,Django会记录引发的异常完整追溯,每个追溯框架的局部变量以及 HttpRequest属性

    但是,有时某些类型的信息可能过于敏感,因此可能不适用于跟踪例如用户的密码或信用卡号。因此,除了过滤掉DEBUG文档中描述的敏感设置外,Django还提供了一组函数装饰器,以帮助您控制应从生产环境中的错误报告中过滤掉哪些信息(即在何处 DEBUG设置为False):sensitive_variables()sensitive_post_parameters()

    sensitive_variables*变量

    如果代码中的函数(视图或任何常规回调)使用易于包含敏感信息的局部变量,则可以使用sensitive_variables装饰器防止这些变量的值包含在错误报告中

    from django.views.decorators.debug import sensitive_variables
    
    @sensitive_variables('user', 'pw', 'cc')
    def process_info(user):
        pw = user.pass_word
        cc = user.credit_card_number
        name = user.name
        ...
    

    在上述例子中,对于该值userpwcc 变量将被隐藏,并用星(替换**********)错误的报告,而值name变量将被公开。

    要从错误日志中系统地隐藏函数的所有局部变量,请不要向sensitive_variables装饰器提供任何参数

    @sensitive_variables()
    def my_function():
        ...
    

    使用多个装饰器时

    如果要隐藏的变量也是函数参数(例如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_wordcredit_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管理员),以防止敏感信息泄漏的诸如用户密码。

  • 相关阅读:
    有关linux查看的命令 及本机yum创建
    linux系统命令1
    手机百度网盘加群方法
    百度网盘保存超限解决办法
    c#委托、泛型委托和匿名方法
    值类型和引用类型的总结
    SQL数据查询语句(一)
    c# Invoke和Begininvoke区别
    c#public、private、protected、internal、protected internal修饰符及访问权限
    C#之打印乘法表
  • 原文地址:https://www.cnblogs.com/Fmaj7/p/13748965.html
Copyright © 2020-2023  润新知