웹 브라우저 제어에서 "보안 경보"창을 비활성화하는 방법
-
05-07-2019 - |
문제
"신뢰할 수없는 인증서"로 HTTPS 사이트에 로그인하기 위해 WebBrowser 컨트롤을 사용하고 있습니다. 그러나 신뢰할 수없는 인증서에 대한 "보안 경고"와 같은 팝업을받습니다.
제목 으로이 창을 찾아 보내야합니다. 대체+와이 누르기 위해 예:
int iHandle = NativeWin32.FindWindow(null, "Security Alert");
NativeWin32.SetForegroundWindow(iHandle);
System.Windows.Forms.SendKeys.Send("Y%");
그러나 사용자는이 창의 깜박임을 볼 수 있습니다.
이 경고를 어떻게 무시할 수 있습니까?
또는 웹 브라우저 컨트롤 에서이 "신뢰할 수없는 인증서"확인을 비활성화합니까?
해결책
이렇게해야합니다.
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
분명히 맹목적으로 인증서를 허용하는 것은 보안 위험입니다. 조심하세요.
다른 팁
좋아요, 기사가 코드 프로젝트에 올라갑니다. http://www.codeproject.com/kb/shell/webbrowsercontroldialogs.aspx바라건대 이것은 도움이됩니다.
인증서가 신뢰할 수있는 인증 당국 (프롬프트의 첫 번째 지점)이 아닌 경우 해당 PC에 신뢰할 수있는 루트 인증 당국에 따라 인증서를 설치할 수 있습니다.
뷰 인증서 에서이 작업을 수행 할 수 있습니다.
어떤면에서 이것은 모든 인증서와 모든 인증서를 수락하는 코드 변경이 필요하지 않기 때문에 더 간단한 솔루션이 될 수 있습니다. 그러나 응용 프로그램이 사용되는 곳마다 인증서를 설치해야합니다.
여기서 우리는 솔루션과 함께 이동합니다. 기본 ActiveX 구성 요소가 그때까지 null이므로 Browser_Navigated 이벤트에서 실행합니다.
private void Browser_Navigating_1(object sender, NavigatingCancelEventArgs e)
{
HideScriptErrors(Browser,true);
}
public void HideScriptErrors(WebBrowser wb, bool Hide)
{
FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if (fiComWebBrowser == null) return;
object objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null) return;
objComWebBrowser.GetType().InvokeMember(
"Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });
}
webbrowser.scripterrorssuppressed 속성을 False로 설정하면 더 이상이 팝업을 얻지 못합니다.