SQL-инъекция второго порядка

def find_or_create_bp(bp_metadata):
"""
Returns a BusinessProcess, creating a new one if not found.
"""
bp_id = bp_metadata\['id'\]
bp_name = bp_metadata\['name'\]

    bp_matches = BusinessProcess.objects.filter(
        bp_id=bp_id,
        bp_name=bp_name
    ).order_by('-id')
    if bp_matches:
        bp = bp_matches[0]
    else:
        bp = BusinessProcess(
            bp_id=bp_id,
            bp_name=bp_name
        )
        bp.save()
        print("BusinessProcess created: " + bp_name)
    return bp

Метод find_or_create_bp в строке 42 из project/api/src/monitoring_backend/monitoring_app/management/commands/migrate_watchitemconfigs.py получает данные базы данных из элемента фильтра. Затем значение этого элемента проходит через код, не будучи и в конечном итоге используется в запросе к базе данных в методе find_or_create_step в строке 64. строка 64 из project/api/src/monitoring_backend/monitoring_app/management/commands/migrate_watchitemconfigs.py. Это может привести к атаке SQL Injection второго порядка.

Вернуться на верх