читая главу djangobook , я натолкнулся на раздел, в котором упоминается эксплойт csrf, в котором ссылка на выход из системы была размещена на скрытом вредоносном сайте.
В веб-приложении, которое я создал с помощью django, я использовал аналогичную ссылку выхода из системы
base.html:
<a href="{% url my_logout %}" > Logout </a>
где URL my_logout указывает на django.contrib.auth.views.logout_then_login
urlpatterns=patterns('django.contrib.auth.views',
url(r'^logout/$', 'logout_then_login', {}, name = 'my_logout'),
)
Теперь, прочитав о нападении csrf, я боюсь, что вредоносный сайт может доставить мне неприятности. Итак, я хотел бы использовать форму для выхода из системы.
Я думал, что смогу сделать так
base.html:
...
<form method="post" action=".">{% csrf_token %}
<input type="hidden" name="next" value="{{next}}" />
<input type="hidden" name="confirm" value="true" />
<input type="submit" value="Logout" />
</form>
...
Теперь, как мне написать представление для обработки этой формы? Если я должен обработать скрытые переменные (confirm
, чтобы проверить, должен ли быть выполнен выход из системы, и next
, чтобы перейти к предыдущему представлению), я все еще буду быть в состоянии использовать метод django.contrib.auth.views.logout_then_login
?
Может кто-нибудь сказать мне, правильно ли я это делаю?
заранее спасибо