Проблема безопасности Django i18n External Redirect
(я новичок в Django)
Я запустил автоматическое сканирование (OWASP ZAP) для проверки безопасности моего приложения, и оно возвращает флаг высокого риска для внешнего перенаправления:
Оповещение об автоматическом сканировании
Похоже, что это как-то связано с путем "/i18n/setlang/" и параметром "next", например "?next=(redirect)"
Я установил i18n путь таким образом
urlpatterns = [ path('i18n/', include('django.conf.urls.i18n')), ... ]
А это мой HTML
<div class="flex justify-items-end">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<form action="{% url 'set_language' %}" method="post" id="form_{{ language.code }}" style="display:inline!important;">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<input name="language" type="hidden" value="{{ language.code }}" />
</form>
<button class="lang-button" type="submit" form="form_{{ language.code }}" value="Submit">
{% if language.code == "en" %}
<img src="{% static 'assets/webfonts/gb.svg' %}" width="30" alt="gb" class="rounded-lg h-5 w-5 mr-3 hover:opacity-75" />
{% endif %}
{% if language.code == "es" %}
<img src="{% static 'assets/webfonts/es.svg' %}" width="30" alt="gb" class="rounded-lg h-5 w-5 hover:opacity-75" />
{% endif %}
{% if language.code == "pt" %}
<img src="{% static 'assets/webfonts/br.svg' %}" width="30" alt="gb" class="rounded-lg h-5 w-5 mr-3 hover:opacity-75" />
{% endif %}
</button>
{% endfor %}
</div>
Я не знаю, действительно ли это проблема безопасности, потому что в конце описания отчета говорится, что "URL-перенаправления не обязательно представляют собой прямую уязвимость безопасности, но могут быть использованы злоумышленниками, которые пытаются социальным инженером заставить жертву поверить, что она переходит на сайт, отличный от истинного места назначения"
Что мне делать? :(
Хотя вы не предоставили достаточно конкретных данных, чтобы быть уверенным на 100%, мое предположение заключается в том, что вы вообще не проверяете/ограничиваете значение next. Поэтому, когда ZAP установил next=SomeRandomNumber.owasp.org, ваше приложение приняло его, и пользователь впоследствии перенаправляется на https://SomeRandomNumber.owasp.org