2017-09-09 4 views
0

모든 IP가 끝점을 쿼리 할 수 ​​있도록 Django에서 RESTful API를 구현하려고합니다. 그러나 ALLOWED_HOSTS = ['*']을 설정하면 헤더 공격이 걱정됩니다.Django REST API 호출 및 allowed_hosts

Why is Django throwing error "DisallowedHost at /"?에 대한 대답을 읽습니다. 이는 API 호출이 서버에 응답하지 말고 응답해야 함을 의미합니다.

나는 그것이 무엇을 의미하는지 또는 어떻게 구현하고 제안을 찾고 있는지 충분히 이해하지 못한다.

궁극적으로, 나는 장고에 의해 차단되지 않는 API 호출을 어떻게 만들 수 있는지 알고 싶다. 이유는 이것이 ALLOWED_HOSTS에 없기 때문이다.

+0

'ALLOWED_HOSTS'는 장고 개발 서버를위한 설정입니다. 개발 서버에서 프로덕션 API를 실행하지 마십시오. 대신 적절한 WSGI 설정을 사용하십시오. –

답변

0

문제는 ALLOWED_HOSTS 및 CSRF 보호와 관련이 없습니다. 두 가지 옵션이 있습니다. 당신은 사용하여 페이지에 크로스 사이트 요청 위조 보호를 비활성화 할 수 있습니다 장고> = 1.9, 또는 이와 같은 장고의 이전 버전에서 발송 방법 장식의 클래스 위의

@method_decorator(csrf_exempt, name=dispatch) 

:

class myView(View): 
    @method_decorator(csrf_exempt) 
    def dispatch(self, request, *args, **kwargs): 
     return super(myView, self).dispatch(request, *args, **kwargs) 

액세스 할 수있는 사람이 염려되는 경우 적절한 토큰을 전달하는 사이트 만 액세스 할 수 있도록 토큰 기반 인증과 같은 다른 인증 방법을 조사해야합니다.

+0

서버가 말아지면 nginx를 통해 Django로 라우트됩니다. 허용 된 호스트에 추가해야한다고 명시되어 있습니다. 클래스에 apiview를 사용하고 있는데 데코레이터가 문제를 해결해야하는지 확신 할 수 없습니다. 다시 시도해 볼 수 있습니다. 현재 장고 인증 토큰을 사용 중입니다. – jgoods

+0

127.0.0.1 또는 액세스에 사용하는 호스트 이름을 추가하려고 시도 했습니까? –

+0

두 번 모두 필요합니다. 아직 본 적이 없지만 –

0

ALLOWED_HOSTS은 (는) API 호출과 관련이 없습니다. 서버가 응답해야하는 호스트 이름 목록입니다.

+0

귀하의 답변은 혼란스러운 부분입니다. "대치에 대한 응답은 구현이 아니라 다른 구현을 의미합니다. 사과는 장고 restframework 및 인증 토큰을 통해 설정됩니다. 끝점에서 서버를 말리면이 허용 사이트 오류가 발생합니다. – jgoods

0

ALLOWED_HOSTS은이 장고 사이트가 제공 할 수있는 호스트/도메인 이름을 나타내는 strings 또는 regular expressions의 목록입니다. API를 방지하려면 Token, JWT 또는 다른 인증 방법을 사용해야합니다.

+0

Django 토큰 인증을 사용하고 있지만, curiv apiview를 사용할 때 허용 된 호스트가 아니기 때문에 거부됩니다. 아마도 nginx를 통해 명령이 라우팅되고 있기 때문일 수 있습니다. – jgoods