Я новичок в программировании.
Я разработал веб-приложение с использованием среды Python django.У меня есть конкретное представление, которое обновляет статус конкретной строки в базе данных с активной на неактивную и наоборот.и я использовал html формы (Radiolist) и шаблоны django на странице hmtl для создания внешнего интерфейса.
Я использовал ORM - метод обновления Django для обновления полей соответственно.Но когда я запускаю аудит безопасности с помощью инструмента аудита безопасности Vega, я получаю предупреждение о возможном внедрении sql.Я пробовал все, но эта ошибка, похоже, не идет
это HTML-код
<form class="" action = "{% url 'CHApp_new:update_statement' %}" method="post">
{% csrf_token %}
<table class="table table-striped table-dark two" align="center">
{% for x in sobjects %}
<tr>
<td>{{forloop.counter}}</td>
<td>{{x.statement}}</td>
{% if x.status == 'y' %}
<td>Active</td>
{% else %}
{% if x.status == 'n' %}
<td>Inactive</td>
{% endif %}
{% endif %}
<td style= "text-align:center"><input id= "{{forloop.counter}}" type="checkbox" name= "{{forloop.counter}}" value={{x.id}}></td>
<input type="hidden" name="radiolist" value="{{forloop.counter}}">
</tr>
{% endfor %}
</table>
<table align = "center">
<tr>
<td><input type="submit" class = "btn btn-primary" name="Update" value="Cycle Activate/Deactivate"></td>
</tr>
</table>
</form>
, и это представление Django.
def update_statement (запрос): sobjects = HomePage.objects.all ()
if request.method == 'POST':
ans_list = [request.POST.get(x) for x in request.POST.getlist('radiolist')]
ans_list = [x for x in ans_list if x is not None]
for x in ans_list:
a = HomePage.objects.get(id = x)
if a.status == 'y':
a.status = 'n'
elif a.status == 'n':
a.status = 'y'
else:
a.status='n'
a.save(update_fields = ['status'])
mydict = {'sobjects':sobjects}
return render(request, 'CHApp/update_statement.html', context = mydict)
это ошибка, которую я получаю, говоря, что возможна инъекция sql.Краткая информация о классификации Сообщение об ошибке Ресурс / CHApp / update_statement / Параметр radiolist Метод обнаружения ПОСТ Тип XPath 2.0 Слепые Инъекции Дифференциальные Проверки высокого риска
Запрос POST / CHApp / update_statement / [csrfmiddlewaretoken = 8hycyGnPiGzsumAxzIS2B6TBigXvXfApNOW8nlqAQQThC81oSYpm2aJFkpfudidR 1 = на radiolist = 1 2= на радиолисте = 2 3 = на радиолисте = 3 4 = на радиолисте = e "или 1 экв. 1 или" a "=" a 5 = на радиолисте = 5 6 = на радиолисте = 6 Обновление = цикл активировать / деактивировать]