CSRF token 생성

Python_Django 2012. 7. 25. 10:16


공격방법 중에 CSRF 관련된 것이 있는 모양인데(어떻게 하는지는 잘 모르겠고),

Django에선 이런 걸 막는데 필요한 정보가 넘어 오지 않으면 처리 중에 에러를 발생시킨다.

그러니까, 반드시 아래의 절차를 따라서 submit할 때 csrf token를 서버로 보내 줘야 한다.


POST방식으로 데이터를 전송하려면, 입력하는 화면에서 아래와 같은 코드가 추가되어야 한다.


1. view에서 request에 대해 csrf 정보 추가

from django.core.context_processors import csrf


def show_userinfo3(request):

    c = {}

    c.update(csrf(request))

    return render_to_response('user/input.html',c)


위와 같이 귀찮게 매번 코드에 추가하지 않으려면,

settings.py의 TEMPLATE_CONTEXT_PROCESSORS에 django.core.context_processors.csrf 가 포함되어 있으면 아래와 같이만 써도 자동으로 csrf 태그가 정보가 추가됨

def show_userinfo3(request):

    return render_to_response('user/input.html', RequestContext(request))



2. form 태그 안에 {% csrf_token %} 추가

<form action="/pasta/user/userinfo4/" method="post"> {% csrf_token %}


이렇게 해서 웹브라우저에서 user/input.html 화면의 소스보기를 보면, {% csrf_token %} 부분에 아래와 같은 코드가 생성됨

<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='c497670310117cb5fbcdc6bc0657d455' /></div>


이런 csrf 정보가 없으면, submit했을 때 서버에서 처리하다가 CSRF token missing or incorrect 에러가 발생함.


AJAX로 처리할 때도 물론 이 token 정보를 보내 줘야 한다.
그러므로, form 전체를 보내는 게 아니라면 반드시 csrfmiddlewaretoken을 포함시켜 보내 줘야 한다.

'Python_Django' 카테고리의 다른 글

Django의 cache 사용  (0) 2012.07.25
decorator 만들기  (0) 2012.07.25
hash(digest) 호출  (0) 2012.07.25
request의 값 처리  (0) 2012.07.25
Django의 session 처리  (0) 2012.07.13
AND


Django는 DB, Filesystem, Cache에 session을 저장할 수 있다.

DB에 session 정보를 저장하도록 설정할 경우, django_session 테이블이 생성된다.


1. session에 값 넣기

   - view 함수에서

     request.session['myname'] = 'michael'


2. session에서 값 얻기

   - view의 함수에서

     myname = request.session['myname']

   

   - Template에서

     {{ request.session.myname }}


'Python_Django' 카테고리의 다른 글

Django의 cache 사용  (0) 2012.07.25
decorator 만들기  (0) 2012.07.25
hash(digest) 호출  (0) 2012.07.25
request의 값 처리  (0) 2012.07.25
CSRF token 생성  (0) 2012.07.25
AND

JD Java Decompiler

Java_Web 2010. 4. 19. 14:43
한동안 잘 쓰던 Java Decompiler인 DJ(맞나?)가 유료화되면서 무료버전을 찾아 쓰기가 귀찮았는데,
막강한 프로그램을 찾았다.
이미 아는 분들이 많을 것 같기도 한데, 나는 며칠 전에야 보았다. ^^;
class 파일 뿐 아니라, JAR 파일의 연결프로그램으로 등록해서 사용하면 더 좋다.

아래와 같이 JAR 파일을 열면 구조가 보이면서,
그중 class파일을 선택하면 바로 오른쪽에 디컴파일된 자바소스가 보인다.
왼쪽엔 클래스의 구조도 풀어서 보여 준다.
아직 더 상세한 기능은 못 봤지만, 이것만으로도 아주 강력하다.


아래는 다운로드 받을 수 있는 주소(프랑스에서 만든 것 같고, 무료다)
설치과정도 없고, 그냥 압축파일 풀어서 나온 실행파일만 실행하면 된다.

http://java.decompiler.free.fr/

들어가 보면, JD-Core가 decompiler 엔진인 것 같고,
위의 스크린샷은 JD-GUI 이다.
Eclipse에서 Source Attach가 안 된 class 파일도 바로 decompile해서 볼 수 있는 것이 JD-Eclipse이다.
어쩌면 이렇게 딱 입맛에 맞게 만들었는지...
저절로 기부하고 싶게 만드는 프로그램이다.

AND