2011-12-05 4 views
0

현재 요청 매개 변수를 기반으로 데이터베이스에 삽입 된 ajax를 통해 서버로 데이터를 보내는 jquery 코드를 개발 중입니다.JQuery AJAX로 일반 CSRF 토큰을 구현하는 방법은 무엇입니까?

그러나 CSR에 대한 공격으로 악용 될 수 있다는 우려가 있습니다. CSRF 공격은 다소 불안정합니다. 나는 이것을 연구하려고 노력했고 장고와 레일즈 같은 특정 프레임 워크에 대한 해답을 찾았을 뿐이다. PHP를 사용하기위한 일반적인 구현 후에 만 ​​대답한다.

JQuery.ajaxsend() 함수를 사용하여 모든 AJAX 요청과 함께 토큰이 전송되도록 코드를 구현할 수 있다는 것을 읽었지 만 JavaScript로 구현할 수있는 방법에 대해서는 잘 모릅니다. PHP 세션 변수. 쿠키의 사용이 충분히 안전할까요?

기본적으로 요청의 출처를 확인하여 요청이 진짜인지 확인하고 시스템을 활용하는 위조 된 요청이 아닌지 확인해야합니다.

누구든지 올바른 방향으로 나를 가리킬 수 있다면 그것은 가장 높이 평가 될 것입니다!

답변

1

글쎄, $.ajax은 PHP 세션 쿠키를 포함한 쿠키를 요청한 것으로 보입니다. 이 기능을 사용하면 CSRF의 공격이 세션 하이재킹으로 변경되지만 시작일뿐입니다. 그런 다음 세션 하이재킹을 피할 수 있으면 SSL을 통해 서비스를 실행하십시오.

다른 방법도 있지만 바닐라 PHP에서는이 방법이 효과가있는 것 같습니다. 내가 틀렸다면 누군가는 나를 바로 잡는다.

+0

이 AJAX 요청이 세션에서 뭔가를 인증하는 것으로 가정은. –

+0

사용자가 액세스 할 수 있으려면 로그인해야합니다. 그래서 인증을 위해 PHP 세션을 점검 할 것입니다. –

+0

또한 $ .ajax와 함께 전송되는 세션 쿠키 정보가없는 것 같습니다. –

1

여기가 장고에 어떻게하는지,하지만 ('csrftoken'으로 쿠키에 CSRF 토큰을 설정 외에) 프레임 워크의 특정의 아무것도 없다 : https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#ajax

+0

그래서 토큰을 생성하고 PHP를 사용하여 로그인시 쿠키에 추가 할 수있을 것 같습니까? 그들의 예제 코드에서 토큰을 생성하는 기능이 없기 때문입니다. –

+0

Django는 미들웨어를 사용하여 모든 페이지 뷰의 쿠키에 CSRF 토큰을 추가합니다 (아직없는 경우). 상기 미들웨어는 또한 CSRF 토큰이 존재하고 올바른지 (POST 매개 변수 또는 X-CSRFToken 헤더에 있음) 유효성을 검사하기 위해 모든 양식 게시물을 검사합니다. –

관련 문제