【问题标题】:Django rest framework password security for <script><script> 的 Django REST 框架密码安全性
【发布时间】:2019-07-26 02:02:08
【问题描述】:

我已经在 Django Rest Framework 中实现了用户注册,但我不知道如何检查 sql 注入等。
例如这样的密码:“”

class UserRegisterSerializer(serializers.ModelSerializer):

def validate(self, data):
    password = data['password']
    password2 = data['password2']
    data.pop('password2')

    if password != password2:
        raise serializers.ValidationError({"password": "Passwords must match."})

    errors = dict()
    try:
        # validate the password and catch the exception
        validators.validate_password(password)

    # the exception raised here is different than serializers.ValidationError
    except exceptions.ValidationError as e:
        errors['password'] = list(e.messages)

    if errors:
        raise serializers.ValidationError(errors)

    return data

此代码在我的设置中:

AUTH_PASSWORD_VALIDATORS = [
{
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', #=> Default (8 characters)
    'OPTIONS': {
        'min_length': 4,
    }
},
{
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},

【问题讨论】:

标签: django rest security passwords


【解决方案1】:

来自 Django 官方安全文档。 Security in Django

Django 的查询集受到 SQL 注入保护,因为它们的查询是使用查询参数化构造的。查询的 SQL 代码与查询的参数分开定义。由于参数可能是用户提供的,因此不安全,因此它们会被底层数据库驱动程序转义。

【讨论】:

    猜你喜欢
    • 2015-08-18
    • 2022-01-20
    • 2015-07-09
    • 1970-01-01
    • 2021-06-17
    • 2018-05-20
    • 2020-04-25
    • 2015-04-07
    相关资源
    最近更新 更多