license: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations

under the License.

보안 가이드

다음 가이드 코르도바 응용 프로그램을 개발할 때 고려해 야 할 몇 가지 보안 모범 사례를 포함 한다. 보안은 매우 복잡 한 주제 이며 따라서이 가이드는 완전 한 유의 하시기 바랍니다. 만약 당신이이 가이드에 기여할 수 있습니다, “문서”에서 코르도바의 버그 추적기 문제 파일 주시기 바랍니다. 이 가이드는 일반 코르도바 개발 (모든 플랫폼)을 적용할 수 있도록 설계 되었습니다 하지만 특별 한 플랫폼 특정 고려 사항이 기록 됩니다.

이 가이드에서는 다음 항목을 설명합니다.

  • 허용 된 사이트 목록
  • Iframe 및 콜백 Id 메커니즘
  • 인증서 고정
  • 자체 서명 된 인증서
  • 암호화 된 저장소
  • 일반 팁
  • 권장된 하는 문서 및 기타 리소스

허용 된 사이트 목록

  • 읽기 및 이해 허용 안내

  • 안 드 로이드 API 10 및 아래에, 허용 된 도메인 작동 하지 않습니다 iframe에 대 한 WP8 및 XMLHttpRequest와. 즉, 공격자가 어떤 도메인 iframe에서 로드할 수 있습니다 코르도바 JavaScript 개체와 해당 하는 기본 Java 개체 모든 스크립트는 iframe 내에서 해당 페이지에 직접 액세스할 수 있습니다. 이러한 플랫폼에 대 한 응용 프로그램을 작성할 때 고려 이걸 받아 해야 합니다. 실제로 10 보다 더 높은 안 드 로이드 API를 대상 하 고는 가능 하면 사용 하지 않는 iframe 로드 외부 콘텐츠-inAppBrowser 플러그인 또는 다른 제 3 자 플러그인을 사용 다는 것을 확인 하는 것이 즉.

Iframe 및 콜백 Id 메커니즘

콘텐츠 허용 도메인 iframe에서 제공 하는 경우 해당 도메인 네이티브 코르 도우 바 다리에 접근이 있을 것 이다. 즉, 만약 제 3 자 광고 네트워크를 허용은 iframe 통해 그 광고를 게재, 그것은 가능한 악의적인 광고 iframe 탈 옥 하 고 악의적인 동작을 수행할 수 있을 것입니다. 이 때문에, 일반적으로 사용 하면 안 iframe iframe 콘텐츠를 호스팅하는 서버를 제어 하지 않는 한. 또한 참고 타사 플러그인 광고 네트워크를 지원 하기 위해 사용할 수 있습니다. 참고가이 문을 iframe 연결을 포함 한 모든 것을 가로채 iOS에 대 한 사실이 아니다.

인증서 고정

코르 도우 바는 진정한 인증서 고정을 지원 하지 않습니다. 이것에 주요 방 벽은 차단 검사는 서버 인증서의 SSL 연결에 대 한 안 드 로이드 네이티브 Api의 부족 이다. (비록 그것은 안 드 로이드에서 자바에 있는 JSSE를 사용 하 여 고정 하는 것을 증명서 할 수, 안 드 로이드 webview 작성 된 c + +, 및 서버 연결을 webview 울퉁불퉁하거나 당신을 위해, 그래서 불가능 거기 자바와 JSSE를 사용 하 여.) 아파치 코르도바 여러 플랫폼에서 일관 된 Api를 제공 하기 위한 것입니다, 이후 그 일관성 휴식 주요 플랫폼에 기능을가지고 있지.

인증서 고정, 응용 프로그램이 시작 될 때 서버의 공개 키 (지문) 예상 값은 검사 또는 응용 프로그램의 수명 동안 다른 다양 한 시간에 근접 하는 방법이 있다. 할 수 있는 코르도바에 사용할 수 있는 타사 플러그인이 있습니다. 그러나, 이건 사실 인증서는 자동으로 서버에 모든 연결에서 예상 값을 확인 합니다 고정과 동일 합니다.

자체 서명 된 인증서

서버에 자체 서명 된 인증서를 사용 하 여 권장 하지 않습니다. SSL을 원하는 경우 다음 것이 좋습니다 서버 제대로 잘 알려진 CA (인증 기관)에서 서명 된 인증서는. 인증서 고정 사실 할 수 없다는 게 중요 합니다.

이유는 어떤 서버 인증서를 장치에 의해 유효한 것으로 간주 될 수 있는 인증서 체인 유효성 검사 우회 자체 서명 된 인증서를 수락. 이 남자-인-더-중간 공격에 통신을 엽니다. 뿐만 아니라 차단 및 장치와 서버 간의 모든 통신을 읽을 뿐만 아니라 통신 수정 해커에 대 한 매우 쉽게 된다. 장치는 서버의 인증서를 신뢰할 수 있는 CA에서 서명 확인 하지 않습니다 때문에 일이 모를 것입니다. 장치 서버 예상 하는 증거가 있다. 남자-인-더-중간 공격을 하 고의 용이성 때문에 자체 서명 된 인증서를 수락만 소폭 보다 낫다 단지 신뢰할 수 없는 네트워크에 http 대신에 https 실행 합니다. 예, 트래픽을 암호화 될 것입니다, 하지만 암호화는 수동 관측을 제외 하 고 쓸모 없는 그렇게는 남자-인-중간, 액세스할 수 있습니다. 있도록 한 남자-인-더-중간에서 키로 암호화 될 수 있습니다. 사용자가 SSL 안전, 신뢰 하 고이 게 될 것 이라고 신중 하 게 그것은 불안, 그래서 SSL 사용 된다 오해의 소지가. 이 신뢰할 수 있는 네트워크에서 사용 하는 경우 (즉, 당신이 완전히 통제 기업 안에 있다면), 그 후에 자체 서명 된 인증서는 권장 하지 않습니다. 신뢰할 수 있는 네트워크에 두 개의 추천은 그냥 네트워크 자체는 신뢰할 수 있기 때문에 http를 사용 하거나 인증서 (자체 서명 되지) 신뢰할 수 있는 CA에 의해 서명. 네트워크는 신뢰할 수 있는 또는 그것은.

여기에 설명 된 원칙 아파치 코르도바를 특정 하지 않습니다, 그리고 그들은 모든 클라이언트-서버 통신에 적용.

코르 도우 바 안 드 로이드를 실행 하는 경우 사용 하 여 android:debuggable="true" 응용 프로그램에서 매니페스트 허용 한다 SSL 오류 인증서 체인 유효성 검사 오류 자체 서명 된 인증서에. 이 구성에서 자체 서명 된 인증서를 사용할 수 있습니다 하지만 이것은 프로덕션 환경에서 응용 프로그램을 사용 해야 하는 구성. 그것은 응용 프로그램 개발 중에 사용할 수 의미 합니다.

암호화 된 저장소

(미정)

일반 팁

안 드 로이드 진저 브레드를 사용 하지 마십시오!

  • 10 보다 높은 분 대상 sdk 레벨을 설정 합니다. API 10 진저, 그리고 진저 Google 또는 장치 제조 업체에 의해 더 이상 지원 되지 않습니다 따라서 코르도바 팀에 의해 추천.
  • 진저 안전한 것으로 표시 되었습니다. 그리고 하나는 대부분의 모바일 Os http://www.mobilemag.com/2012/11/06/andriod-2-3-gingerbread-security/ 대상.
  • 안 드 로이드에 허용 된 진저 브레드 또는 낮은 작동 하지 않습니다. 즉, 공격자는 다음 코르도바 Api의 모든 액세스 및 개인 데이터를 도용, 프리미엄 요금 번호로 SMS 메시지를 보낼 다른 악의적인 행위를 수행 하는 액세스를 사용할 수 있는 iframe에 악성 코드를 로드할 수 있습니다.

InAppBrowser를 사용 하 여 외부 링크에 대 한

  • InAppBrowser를 사용 하 여 모든 외부 웹사이트에 링크를 열 때. 이것은 도메인 이름이 고 InAppBrowser는 네이티브 브라우저의 보안 기능을 사용 합니다 웹사이트에는 영향을 주지 것입니다 있기 때문에 응용 프로그램에 직접 콘텐츠를 포함 하 여 코르도바 환경에 대 한 액세스 허용 보다 훨씬 안전 합니다. 타사 웹 사이트를 신뢰 하 고 응용 프로그램에 직접 포함 하는 경우에 그 제 3 자 웹사이트 악성 웹 콘텐츠에 연결할 수 있습니다.

모든 사용자 입력의 유효성을 검사합니다

  • 항상 응용 프로그램을 허용 하는 모든 입력의 유효성을 검사 합니다. 여기에 사용자 이름, 암호, 날짜, 업로드 된 미디어 등에 포함 됩니다. 공격자는 HTML과 JS 자산 (응용 프로그램을 디컴파일 또는 chrome://inspect 같은 디버깅 도구를 사용 하 여 중) 조작할 수 있는,이 유효성 검사도 수행 해야 당신의 서버에 모든 백엔드 서비스에 데이터를 전달 하기 전에 특히.
  • 다른 소스에 데이터 유효성을 검사 해야: 사용자 문서, 연락처, 푸시 통지

중요 한 데이터를 캐시 하지 않습니다

  • 사용자 이름, 암호, 지리적 위치 정보 및 기타 중요 한 데이터를 캐시 하는 경우 다음 그것 수 잠재적으로 나중에 검색할 권한이 없는 사용자 또는 응용 프로그램에 의해.

당신이 무슨 일을 하는지 알지 않으면 eval ()을 사용 하지 마십시오

  • 자바 스크립트 함수 eval () 학대의 오랜 역사를가지고 있습니다. 잘못 사용 하면 그것은 주입 공격, 어려움, 및 느린 코드 실행 디버깅을 위해 코드를 열 수 있습니다.

소스 코드 보안 가정 하지 마십시오

  • 코르 도우 바 응용 프로그램을 네이티브 컨테이너에 포장 얻을 HTML과 자바 스크립트 자산에서 빌드 이후 안전 코드를 고려해 서는 안됩니다. 리버스 엔지니어링 코르도바 응용 가능 하다.

권장된 하는 문서 및 기타 리소스