2010-01-18 5 views
0

https를 사용하는 하나의 사이트 만 연결하는 Android 플랫폼 용 앱을 만들고 있습니다. 유효한 SSL 인증서가 있어도 다른 사이트에 연결할 수 없게하는 것이 중요합니다. 모든 양식 리디렉션 (예 : 연결해야하는 사이트 인 것처럼) 또는 기타 "공격"에 저항 할 수 있기를 바랍니다. 안타깝게도 안드로이드에서 SSL에 관한 훌륭한 튜토리얼을 찾을 수 없습니다 ... 아시나요? 나는 몇몇 연결 또는 통보를 위해 고맙게 여길 것입니다. 아니면 코드 스 니펫을 줄 수 있습니까? 내 응용 프로그램은 HttpURLConnection 또는 HttpClient를 사용할 준비가되어 있습니다. 어떤 경로를 선택하든 차이가 없습니다.정확히 하나의 사이트에 HTTPS 연결 (Android)

미리 감사드립니다. :)

답변

1

하드 코딩 URL이 해결되지 않을까요?

+0

URL은 하드 코드되어 있습니다. :) 알 수없는 불쾌한 네트워크가 다른 IP에 http 요청을 보낼 수 있다는 사실을 두려워합니다. 실제로 가능한지 모르겠습니다. 것은 하나의 인증서 만 받아들이고 싶습니다만, HttpClient를 적절하게 인스턴스화하는 방법을 모르겠습니다 ... – omarcin

+0

나는 따라 가지 않을 것이라고 생각합니다. 당신은 하나의 주소로 장치가 https 연결되도록하고 싶습니다. URL 또는 IP를 하드 코딩하면 해결됩니다. 기기와 애플리케이션 내부에서 http 요청을하는 "불쾌한 네트워크"를 어떻게 기대하는지 설명하십시오. –

0

정말로 편집증 환자라면 DNS 서버가 중독 될 때 URL이 다른 IP를 가리킬 수 있으므로 URL을 하드 코딩하는 것은 안전하지 않습니다. 이것들은 비록 일어날 것 같지 않습니다.

하드 코딩 IP는 DNS 이름 확인없이 서버에 직접 액세스하므로 문제가 발생할 수 있습니다.

0

나는 asker의 편집증이 아주 정당하다는 것을 지적하고 싶다. 사이트에 유효한 인증 기관이 서명 한 인증서가 있고 앱에서 확인한 경우 은 일반적으로이 안전해야하지만 최근 기록에 따르면 CA는 완전히 오류가없는 것은 아닙니다.

URL을 하드 코딩하면 Man-in-the-Middle 공격을 막는 데 아무런 효과가 없습니다. 한 사이트에만 연결하려는 경우 사이트의 인증서 또는 공개 키를 앱에 하드 코딩 할 수 있습니다.이 과정을 인증서 고정이라고합니다. 이렇게하면 누군가가 사이트의 비공개 키의 복사본을 얻지 않는 한 (어떤 경우에도 침몰 한 경우) 사이트의 개인 키 보유자 만 메시지를 보낼 수 있으므로 해당 사이트와 통신하고 있다는 것을 확신 할 수 있습니다 사이트의 공개 키로 해독 가능. 참고로 :

구현 :
https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning#Public_Key_Checks

일반 정보 :
http://www.netspi.com/blog/2013/04/01/certificate-pinning-in-a-mobile-application/

편집증은 보안 문제를 처리 할 때 표준 절차, 그리고 좋은 이유.