Платформа Django CSRF не может быть отключена и повреждает мой сайт

Это - миф, что Вы не можете пропустить память в управляемом коде. Предоставленный, это намного более твердо, чем в неуправляемом C++, но существует миллион способов сделать это. Статические объекты, содержащие ссылки, ненужные ссылки, кэширование, и т.д. при выполнении вещей "правильный" путь, многие объекты, не будут значительно позже собираться "мусор", чем необходимый, который является видом утечки памяти, слишком по-моему, в практическом и не теоретическом пути.

, К счастью, существуют инструменты, которые могут помочь Вам. Я использую Microsoft Профилировщик CLR много - это не самый удобный для пользователя инструмент, никогда записанный, но это определенно очень полезно, и это свободно.

57
задан MikeN 30 October 2009 в 17:28
поделиться

3 ответа

См. Ответы ниже для лучшего решения. С тех пор, как я написал это, многое изменилось. Теперь есть более эффективные способы отключить CSRF.

Я чувствую твою боль. Изменение такой фундаментальной функциональности фреймворком недопустимо. Даже если я хочу начать использовать это с этого момента, у меня есть устаревшие сайты на том же компьютере, которые используют копию django. Подобные изменения должны потребовать пересмотра основного номера версии. 1.x -> 2.x.

В любом случае, чтобы исправить это, я просто закомментировал это и перестал так часто обновлять Django.

Файл: django / middleware / csrf.py Около строки 160:

            # check incoming token
#            request_csrf_token = request.POST.get('csrfmiddlewaretoken', None)
#            if request_csrf_token != csrf_token:
#                if cookie_is_new:
#                    # probably a problem setting the CSRF cookie
#                    return reject("CSRF cookie not set.")
#                else:
#                    return reject("CSRF token missing or incorrect.")
11
ответ дан 24 November 2019 в 19:11
поделиться

В общем, вам не следует отключать защиту CSRF, поскольку это открывает дыры в безопасности. Если вы настаиваете, хотя…

Совсем недавно в транк появился новый способ защиты от CSRF. Ваш сайт случайно все еще настроен на работу по-старому? Вот документы для The New Way ™ и документы для The Old Way ™ .

6
ответ дан 24 November 2019 в 19:11
поделиться

Да, фреймворк Django csrf можно отключить.

Чтобы вручную исключить функцию просмотра из обработки каким-либо промежуточным программным обеспечением CSRF, вы можете использовать декоратор csrf_exempt, находящийся в модуле django.views.decorators.csrf. Например: ( см. Документ )

from django.views.decorators.csrf import csrf_exempt                                          
@csrf_exempt                                                                                  
def my_view:                                                                            
    return Httpresponse("hello world")

.. а затем удалите {% csrf_token%} внутри форм из вашего шаблона или оставьте другие вещи без изменений, если вы его не включили в ваших формах.

127
ответ дан 24 November 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: