이 보안 문제를 해결하는 방법
저는 10초마다 서버 컨트롤러에서 작업을 호출하는 Ajax-polling 스크립트를 구현했습니다.응답을 사용하여 다음의 내용을 대체합니다.div
:
function getFoo() {
var link = '/Secure/GetFoo';
$.post(link, function (response) {
$('#FooSection').replaceWith(response);
});
setTimeout("getFoo();", 10000);
}
이것은 https를 통해 이루어집니다.잠시 동안 "유휴" 상태가 되면 IE에 다음 메시지가 표시됩니다.
이 페이지는 제어할 수 없는 정보에 액세스하고 있습니다.이로 인해 보안 위험이 발생합니다.계속하시겠습니까?
사용자가 예를 클릭하면 페이지가 다음으로 리디렉션됩니다.div
응답만 표시합니다.사용자가 아니오를 클릭하면 아무 일도 일어나지 않지만,div
컨테이너가 새로 고쳐지지 않습니다.
브라우저 설정을 통해 이 메시지를 표시하지 않을 수 있지만 위 대화 상자에 따라 기본 예를 선택할 수 있습니다.
이전에도 비슷한 문제가 제기된 적이 있지만, 유감스럽게도 해결책은 없었습니다.저는 기본적으로 안전한 연결에서도 아약스 폴링을 할 수 있도록 하고 싶습니다.아이디어 있어요?
Internet-Zone(인터넷 영역) 페이지에는 해당 대화 상자가 표시되지 않습니다.기본적으로 이 작업은 인터넷 영역에서 자동으로 차단됩니다.
인트라넷 영역에 해당 대화 상자가 나타나는 근본 원인은 다음 두 가지입니다.
XMLHTTPRequest 개체(http://blogs.msdn.com/b/ieinternals/archive/2011/04/22/ie-security-prompt-page-accessing-cross-domain-information-not-under-its-control.aspx) 를 사용하여 크로스오버 요청을 수행하려고 합니다.
HTML을 호스팅하는 OBJECT 태그를 크로스 오리진 페이지로 이동하려고 합니다.
XMLHTTPRequest 대신 XDomainRequest를 사용하면 사례 #1을 피할 수 있습니다.OBJECT 태그 대신 IFRAME을 사용하면 사례 #2를 피할 수 있습니다.
얼마 전에 AJAX 요청 후 IE가 왜 불만을 제기하는지 알 수 없어서 비슷한 문제를 겪었습니다.
저는 Firebug의 넷 콘솔을 사용하고 요청을 하나씩 검토한 후 https:// 대신 http://를 찾을 때까지 동일하게 할 것을 제안합니다. 페이지를 보지 않고 디버깅하는 것은 거의 불가능하겠지만, https를 통해 로드되지 않는 배경 이미지와 같은 것일 수 있습니다.
참고: IE라고 말씀하신 것은 알아챘지만, 이와 같은 문제는 아마도 브라우저별 문제가 아닐 것입니다. Firefox/Chrome은 IE처럼 https가 아닌 요소가 있는 것에 대해 그렇게 호들갑을 떨지 않습니다.
코드에는 두 가지가 있습니다.
POST Ajax 요청을 사용하는 이유는 무엇입니까? GET 요청은 GET 요청처럼 보이기 때문에 GET 방법이 더 나은 선택일 수 있습니다.
문제와 연결되지는 않지만 평가할 문자열과 함께 setTimeout을 사용하면 안 됩니다.첫 번째 인수로 setTimeout 변수를 지정해야 하며 이 변수가 실행할 함수여야 합니다.
function getFoo() {
var link = '/Secure/GetFoo';
$.get(link, function (response) {
$('#FooSection').replaceWith(response);
});
window.setTimeout(getFoo, 10000);
}
프로토콜 관련 하이퍼링크를 사용해 본 적이 있습니까?//something.com/image.png
)? 이 링크 또는 이 링크를 참조하십시오.
코드에 src 속성이 "https"가 아닌 "http"로 시작하는 요소가 하나라도 있으면 IE에서 해당 메시지를 표시합니다.
가져올 데이터에 src 특성에 src="src://..." 요소가 없는 것이 확실합니까?
이전에 Ajax 호출을 통해 삽입되는 새 콘텐츠에 보안 이미지 자산이 없는 링크가 있어서 이런 일이 발생한 것을 본 적이 있습니다. 혹시 이 문제가 발생할 가능성이 있습니까?
절대 URL을 사용해 보셨습니까?
varlink = 'https://www.yourdomain.com/Secure/GetFoo';
언급URL : https://stackoverflow.com/questions/6290149/how-to-overcome-this-security-issue
'programing' 카테고리의 다른 글
BINARY XML로 저장된 경우 Oracle XML 유형의 크기 (0) | 2023.07.28 |
---|---|
How to create a typedef for function pointers (0) | 2023.07.28 |
루아에서 줄 쪼개기? (0) | 2023.07.28 |
ALTER TABLE 구문 - DIRECTORY 키워드 누락 (0) | 2023.07.28 |
pphp 도커 이미지에 pdo 드라이버를 설치하는 방법은 무엇입니까? (0) | 2023.07.28 |