2016-08-15 2 views
0

애플리케이션 외부의 리퍼러로부터의 요청을 방지하는 우아한 방법이 있습니까? app.yaml 문서를 살펴보면 상자 기능과 같지 않지만 수동으로 다시 구현해야하는 것이 아니라 어딘가에 어딘가에 숨겨져 있어야한다는 것이 일반적으로 선호되는 것처럼 보입니다. 모든 애플리케이션에 대해AppEngine : 외부 요청 방지

+0

"애플리케이션 외부의 리퍼러로부터의 요청"이란 정확히 무엇을 의미합니까? 예 : 이것은 CORS의 관심사입니까? –

+0

물론입니다. –

+0

Flask 또는 Django와 같은 프레임 워크를 사용하고 있습니까?그렇다면, 당신은 쉽게처럼, 수표와 모든 요청을 가로 챌 수 있습니다 '@login_manager.request_loader @ login_manager.header_loader @ login_manager.user_loader' – GAEfan

답변

0

아니요. GAE에는 기본 제공 로직이 없습니다. 모든 지원은 애플리케이션 별 요청 라우팅 수준에서 이루어져야합니다.

0

이 내장되어

를 애플리케이션 제목에서 당신이 핸들러 login: admin을 지정할 수 있으며, 단지 관리자 나 AppEngine에 (의 요청을 받아들이 예를 들어 크론, taskqueues, 앱 자체의 pribably URL을 가져올 수. - 마지막 하나는 확실하지 않다.).

https://cloud.google.com/appengine/docs/python/config/appref#handlers_element은 또한 당신이 리퍼러, IP, 사용자 에이전트처럼 HTTP_HEADERS을 확인할 수 있습니다

이 문서를 참조하십시오.

또한 토큰을 발행하고 모든 요청에 ​​대해 토큰을주고받을 수 있습니다.

+0

저는 로그인이 아닌 일반 보안에 대해 말하고 있습니다. 나는 원래의 질문에서 당신이 제공 한 문서에이 정보가 없다고 지적했다. 예, 브라우저에서 CORS를 적용 할 수 있도록 헤더를 설정할 수 있습니다. 그러나 명시 적으로 애플리케이션 전용 액세스 (Google에서 내부적으로 구현)를 통해 제어 된 API 액세스를 시행하거나 적어도 호스팅 도메인과 일치하는 리퍼러 (어쩌면 구성에서 문자열 일치가 설정 됨) 만 명시하면, 이 요청을 할 수 있습니다. 단순한 공격 경로로부터 보호 할 수있는 추가 레이어가 될 것입니다. –

0

여기에는 몇 가지 문제가있을 수 있습니다.

CORS - 악의적으로 페이지를 방지하거나 비 원 서버에 데이터를 보내는 브라우저를 강제하는 보안 수단. 서버는이를 강제 할 수 없으며 오직 그것을 허용합니다. 허용되는 응용 프로그램 수준의 우려 사항 (예 : GAE에 기본 제공되지 않음)

XSRF - 악의적 인 클라이언트 코드로 인해 계정이 악용 된 인증 된 사용자를 중지시키기위한 서버 강제 보안 조치입니다. 애플리케이션 수준의 문제입니다 (예 : GAE에 기본 제공되지 않음).

인증 - 일부 권한 집합으로 사용자 또는 클라이언트 식별. GAE (클라우드 종점, 아이덴티티 서비스 제공, 관리자 로그인 필요)에 대한 일부 지원이 있지만 일반적으로 응용 프로그램 수준의 관심사이기도합니다. 클라이언트를 승인하는 경우 (사용자가 아닌) 지원이 없습니다.

인증 - 역할/권한에 따라 다른 액세스 세트. 아니 내장

다른 솔루션 :. 호스트 또는 원산지 헤더를 사용

을 - 하찮게 outfoxed 컬 요청, 또는 더 복잡한 응용 프로그램을 구현하는 사람이

API 토큰 - 미세 HTTPS를 통해 서버에 서버 만 게시 된 클라이언트 (예 : 웹 페이지)에서 사용할 때 쉽게 손상됨

가장 좋은 방법은 프레임 워크를 활용하고 사용자 계정을 확보하는 것입니다.

이렇게하고 싶지 않은 경우 XSRF (헤더와 쿠키의 토큰)로 웹 클라이언트가 '앱'에 응답했는지 확인하는 것만으로도 충분합니다. 이것은 클라이언트가 웹 브라우저이지만 origin/host와 동일한 경우에만 작동합니다.

+0

예. 나는 referrer (ergo, header) 기반의 솔루션을 찾고있다. 언급했듯이, 나는 단지 "단순한 공격 벡터로부터 보호하기위한 하나의 추가 레이어"를 찾고 있습니다. 그것은 GAE에 내장되어있는 것에는 아무런 반응이없는 것처럼 들리지 않습니다. –

+0

실제로 보안 기능을 제공하지 않기 때문에 아무 것도 내장되어 있지 않습니다. CORS에 의존하는 것 외에는 아무것도하지 않는 것이 궁극적으로 똑같이 효과적 일 것입니다 (둘 중 하나를 우회하는 것은 같은 노력입니다) – Nick