Django-safeform. ¼øÀ§ ¹× ¿ä¾à
- °Ô½ÃÀÚ À̸§:
- Simon Willison
- °Ô½ÃÀÚ À¥»çÀÌÆ®:
- http://www.sslinks.co.uk
Django-safeform. ű×
Django-safeform. ¼³¸í
Django ¾ç½ÄÀ»À§ÇÑ CSRF º¸È£ Django-safeformÀº ¾ç½Ä ¼öÁØ¿¡¼ ±¸Çö µÈ Django¿¡ ´ëÇÑ CSRF º¸È£¸¦ Á¦°øÇÕ´Ï´Ù. ¹Ìµé¿þ¾î°¡ ÇÊ¿ä ¾øÀ½. Django.forms ¾ç½ÄÀ» º¸È£ÇÏ´Â µÎ ´Ü°è´Â µÎ ´Ü°èÀÔ´Ï´Ù. 1. SafeForm Ŭ·¡½º µ¥ÄÚ·¹ÀÌÅÍ·Î ·¦ÇÎÇϽʽÿÀ. ÀÌ ÅäÅ«ÀÌ ¿Ã¹Ù¸¥ °ªÀÌ ÀÖ´ÂÁö È®ÀÎÇϱâÀ§ÇÑ À¯È¿¼º °Ë»ç ³í¸®¿Í ÇÔ²² ¼û°ÜÁø csrf_token Çʵ带 Ãß°¡ÇÕ´Ï´Ù. ¶ÇÇÑ ¾ç½Ä Ŭ·¡½ºÀÇ ¼¸íÀ» ¾à°£ º¯°æÇÏ°í ¾Æ·¡ ¿¹¸¦ ÂüÁ¶ÇϽʽÿÀ .2. @csrf_protect ¹Ìµé¿þ¾î¸¦ ¾ç½ÄÀÌ Æ÷ÇÔ µÈ ºä¿¡ Àû¿ëÇϽʽÿÀ. ÀÌ·¸°ÔÇϸé _csrf_cookie°¡ ¿¹Á¦ Æú´õÀÇ "./manage.py runserver"¸¦ ¿Ã¹Ù¸£°Ô ¼³Á¤ÇÏ¿© ¶óÀ̺귯¸®ÀÇ ±â´ÉÀ» º¸¿©ÁÖ´Â Django ¼¹ö¸¦ ½ÃÀÛÇÕ´Ï´Ù. µ¿ÀÏÇÑ µð·ºÅ丮¿¡¼ "./manage.py Å×½ºÆ®"¸¦ »ç¿ëÇÏ¿© ÀåÄ¡ Å×½ºÆ®¸¦ ½ÇÇàÇÕ´Ï´Ù. Django.http¿¡¼ Django.http °¡Á® ¿À±â httpresponse¿¡¼ django_safeform °¡Á® ¿À±â SafeForm, csrf_protect Ŭ·¡½º ChankPasswordForm (formss.forms.form) ) : password = forms.charfield (widget = forms.passwordInput) changeSpasswordForffield (widget = forms.paswordInput) changePasswordForm = safePasswordForm = @csrf_protect def change_password (¿äû) : Æû = changePasswordForm (¿äû) # a ¾ç½Ä .is_valid () : # b # ... ¿©±â¿¡¼ »ç¿ëÀÚÀÇ ºñ¹Ð¹øÈ£¸¦ º¯°æÇϽʽÿÀ ( '°í¸¿½À´Ï´Ù') reprent_to_response ( 'change_password.html', { 'form': form,})¸¦ ¹ÝȯÇÕ´Ï´Ù. request.post.b¸¦ Àü´ÞÇÏ´Â ´ë½Å »ý¼ºÀÚ¿¡°Ô °´Ã¼¸¦ ¿äûÇϽʽÿÀ. safeformÀÇ ÄèÀûÇÑ ºÎÀÛ¿ëÀº ´õ ÀÌ»ó frequest.method == 'post'¸¦ È®ÀÎÇÏ´Â µ¥ ´õ ÀÌ»ó È®ÀÎÇÒ ÇÊ¿ä°¡ ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ¾ç½ÄÀ» ÀÔ·Â µ¥ÀÌÅÍ ¼¼Æ®¿¡ ¹ÙÀεù - SafeFormÀº ÀÌ°ÍÀ» ó¸®ÇÕ´Ï´Ù. You.Custom ¾ç½Ä ¼½Ä ÆÄÀÏ : ÅÛÇø´ÀÌ {{form.as_p}}¿Í °°Àº ¾ç½Ä ·»´õ¸µ µµ¿ì¹Ì ¹æ¹ý Áß Çϳª¸¦ »ç¿ëÇÏ´Â °æ¿ì ¼û°ÜÁø csrf_token Çʵ尡 ÀÚµ¿À¸·Î Ãâ·ÂµË´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇ ÅÛÇø®Æ®¸¦ »ç¿ëÇÏ¿© ¾ç½ÄÀ» ·»´õ¸µÇÏ´Â °æ¿ì ÇØ´ç Çʵ带 ¸í½Ã ÀûÀ¸·Î Ãâ·ÂÇÏ´Â °ÍÀ» ÀØÁö ¸¶½Ê½Ã¿À. ¿¹Á¦ : {{form.non_field_errors}} »õ ¾ÏÈ£ {{form.password}} ¿ä±¸ »çÇ× : ¡¤ ÆÄÀ̽㠡¤ Àå°í
Django-safeform. °ü·Ã ¼ÒÇÁÆ®¿þ¾î