336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
구글 플레이에 앱을 등록할 때 아래와 같은 보안 알림을 받을 수도 있다.
이것이 무엇인가??
HostnameVerifier를 안전하게 사용하고 있지 않다는 건데
혹시 소스가 아래와 같은 형태로 되어 있지 않나 확인해보자.
try {
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
X509Certificate[] myTrustedAnchors = new X509Certificate[0];
return myTrustedAnchors;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
} catch (Exception e) {
}
위 소스에서 setDefaultHostnameVerifier 부분이 문제 이다.
어떤 hostname이든 승인을 시켜주는 형태 이기 때문이다.
이것을 안전하게 변경 시키기 위해서 특정 hostname만 승인을 해주는 형태가 아래와 같다.
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession arg1) {
if (hostname.equalsIgnoreCase("api.my.com") ||
hostname.equalsIgnoreCase("api.crashlytics.com") ||
hostname.equalsIgnoreCase("settings.crashlytics.com")) {
return true;
} else {
return false;
}
}
});
https://stackoverflow.com/a/41393328
원래 setDefaultHostnameVerifier를 수정하지 않고 정상적인 동작이 이뤄져야 한다.
위 소스 자체를 삭제하고 정상적으로 동작 한다면 그게 맞는 것이다.
만약 그대로 안된다면 위 내용을 참조하자.
아래 내용은 메일로 함께 온 내용이다.
2017년 3월 1일 부러 HostnameVerifier를 강화 한다는 내용이다.
참고하기 바란다.