2014-10-25 2 views
1

Flask-Security docs은 모든 중요한보기 끝점에 대한 JSON/Ajax 지원을 언급합니다. 따라서 JSON 객체로 뷰를 조회하여 Flask-Security awesomeness를 모두 얻을 수 있습니다. API에 대한REST API의 일부로 Flask-Security 사용

하지만, 지금은 편안하고 API의 일부로 사용하기 위해 노력하고있어, 그것은 작동하지 않습니다, 그것은 웹 페이지에 대한 필요하다 CSRF 토큰을 필요로하기 때문에,하지만 :

{ 
    "meta": { 
     "code": 400 
    }, 
    "response": { 
     "errors": { 
      "csrf_token": [ 
       "CSRF token missing" 
      ] 
     } 
    } 
} 

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

0

알았어, 알아 냈어. JSON 웹 토큰 (JWT)와 같은 뭔가

WTF_CSRF_ENABLED = False 
+0

기본 앱에 어떤 영향을 줍니까? 그것은 웹 사이트의 보안을 감소합니까? –

5

지내는 API를 사용하여 선호하는 방법은 토큰 기반 인증 :가 필요한 모든 앱에 대해 설정하는 플라스크 설정 변수입니다. 이 구성표는 서버 측에서 HTML을 생성하거나 쿠키를 사용하지 않으므로 보안 영역이 다릅니다. 저는 보안 전문가가 아니지만 제가 읽은 것에서 이것은 당신이 Cross Site Request Forgery (CSRF)에 취약하지 않다는 것을 의미합니다. 그래서 Flask-Security에서 CSRF 토큰을 끄는 것이 좋습니다.

PyJWT 토큰 기반 인증 방식을 사용해보십시오. 토큰을 얻으려면 자격 증명을 '로그인'끝점에 게시하고 응답으로 토큰을받습니다. 그런 다음 HTTP 헤더를 통해 각 요청과 함께 토큰을 보내야합니다. JS 측에서 이것을 종종 설정할 수 있습니다. 여기

몇 참조입니다 :

참고 : 플라스크-JWT는 한동안 업데이트되지 않은 파이썬 itsdangerous 라이브러리를 사용하는 것 같다. 여기에 토론이 있습니다 : https://github.com/mattupstate/flask-jwt/issues/10 다시 말하지만, 저는 보안 전문가가 아니며 두 라이브러리 모두 기본적으로 동일한 알고리즘을 사용하여 인코딩/디코딩을 처리하는 것으로 보입니다. PyJWT와 Python-Jose는 모두 jwt.io에 나열되어 있으며 확장 된 기능을 가지고 있습니다.

관련 문제