2011-09-27 5 views
0

POST 요청을 수행하는 Django 웹 응용 프로그램 (장고 양식을 사용하지 않음)에 HTML 양식이 있습니다.Django 웹 응용 프로그램에서 부분적으로 채워진 양식으로 크로스 도메인 리디렉션

이제 다른 도메인의 다른 웹 응용 프로그램이 다른 응용 프로그램에 데이터를 보내고이 양식의 웹 페이지로 부분적으로 채워질 수 있도록 기능을 구현하고 싶습니다. 데이터는 JSON 일 수 있음).

리디렉션 외에도 사용자가 내 양식에서 제출을 클릭하면 짧은 텍스트 정보와 함께 다른 서버로 메시지를 보내려합니다.

이것을 구현하는 가장 좋은 방법은 무엇인지 모르겠습니다. 피스톤과 같은 REST 인터페이스?

내가 따라야 할 일반적인 지침을 제공해 줄 수 있습니까?

답변

1

양식 및 외부 웹 앱의 POST 데이터를 처리하는보기를 만들어야합니다.

보기에서 가져 오는 데이터가 request.META [ 'HTTP_REFERER']를 확인하여 사이트 또는 다른 사이트에서 온 것인지 확인할 수 있어야합니다.

귀하의 사이트에서 온 경우, 평상시대로 양식을 처리 할 수 ​​있습니다.

그러나 외부 사이트에서 온 경우 양식 대신 양식을 사용하여 렌더링하십시오. 외부 사이트에서 가져온 정보를 컨텍스트에 넣을 수 있으므로 템플릿의 양식을 미리 채울 수 있습니다.

<input type="hidden" name="external_site_url" value="{{ external_site_url }}"> 

양식이 제출되는 external_site_url의 존재 여부를 확인할 수 있습니다

는 또한이 외부 사이트, 같은 출신이라고하는 형태로 플래그를 포함해야한다. 존재하는 경우 다른 서버로 메시지를 보낼 수 있습니다.

다른 응용 프로그램에서보기를 사용하기를 원하기 때문에보기에서 CSRF 보호를 비활성화해야합니다 (https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#csrf-protection-should-be-disabled-for-just-a-few-views).

또한 다른 앱이 사용자의보기를 사용하도록 허용함으로써 가능한 많은 공격에 노출됩니다. 입력 유효성 검사에 매우주의를 기울여야하며 뷰에 실제로 필요한 것을 수행 할 수있는 기능 만 제공하십시오. 예를 들어 외부 응용 프로그램이 데이터베이스의 항목을 삭제하지 못하도록하고 싶지는 않습니다.

관련 문제