2011-10-21 2 views
0

나는 보안 문제로 인해이 일을 막을 수 있다고 확신하지만, 내가 알지 못하는 해결 방법이 있는지 궁금해 ...Javascript 보안이 나를 멈추고 있습니까?

연락처 DB에 사용자의 전자 메일을 주입하는 스크립트가 있습니다. 내 고객의 그것은 IE에서 폭파지만 FF, 크롬에서 일하고 (평소와 같이). 서버를 트러스트에 추가 할 수 있을지 궁금해합니다.

<script type="text/javascript"> 

    window.onload = init; 

    //Global XMLHTTP Request object 
    var XmlHttp; 
    function CreateXmlHttp() { 
     //Creating object of XMLHTTP in IE 
     try { 
      XmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
      try { 
       XmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (ex) { 
       XmlHttp = null; 
      } 
     } 
     //Creating object of XMLHTTP in Mozilla and Safari 
     if (!XmlHttp && typeof XMLHttpRequest != "undefined") { 
      XmlHttp = new XMLHttpRequest(); 
     } 
    } 

    function init() { 
     var x = document.getElementsByName("btnContinue"); 
     x[0].onclick = submitForm; 
    } 

    function submitForm() { 
     var x = document.getElementsByName('Email'); 
     if (x[0].value.length > 0) { 
      CreateXmlHttp(); 
      XmlHttp.open("POST", "https://app.icontact.com/icp/signup.php", false); 
      XmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
      XmlHttp.send("redirect='http://www.xyz.com/articles.asp?ID=97'&errorredirect='http://www.xyz.com/articles.asp?ID=256'&fields_email=" + 
       x[0].value + "&listid=123&specialid:123=YP7I&clientid=123&formid=123&reallistid=1&doubleopt=0&Submit=Submit"); 
     } 
    } 

</script> 

나는 어떤 통찰력도 주시면 감사하겠습니다.

감사합니다.

+0

아약스를 사용하면 코드가 적어 질 것입니다. http://api.jquery.com/jQuery.ajax/ –

+0

동일한 출처의 정책 이슈처럼 보입니다. https://app.icontact.com/에 액세스 할 수있는 경우 도메인에서 POST 요청을 할 수 있도록 Access-Control-Request-Header를 설정할 수 있습니다. – JackWink

+0

저는 통제 할 수없는 페이지에서 작업 할 때 조금 제약이 있습니다. 페이지는 페이지의 미리 정의 된 영역을 통한 코드 삽입 만 허용하는 제 3 자 사이트 빌더 중 한 곳에서 호스팅됩니다. 따라서 숨겨진 것이 아닌 이상 새로운 서식을 만들거나 라이브러리를 가져올 수 없습니다. 나는 파이어 폭스에서 잘 작동한다는 것에 주목해야한다. IE에서만 폭파. – TomO

답변

0

첫 번째 제안은 ActiveX 개체보다 먼저 생성하는 것입니다. IE7 이상에서 AJAX는 다른 브라우저의 기능을 지원합니다.

다음으로 open() 방법에서 상대 경로를 사용해야합니다. 나는 당신의 질문을 형성한다고 생각하지만 그것은 어떤 사이트에서도 실행할 수 있어야 할 것입니다. 이 경우 양식과 iframe을 만들고 "old"메서드를 사용하는 것이 좋습니다.

0

같은 출처의 정책 문제입니다. 액세스 허용 컨텐트 헤더는 설정 될 수 있지만 IE ActiveXObject는이를 사용하지 않습니다. XMLHttpRequests는 헤더를 따르며이를 지원하는 브라우저에서 작동합니다. (

당신이 당신의 웹 서버를 통해 프록시를 할 수 있다면 ... 그들이 IE 호환 도메인 간 POST에 대한 해결책을 발견 것처럼 보이지 않지만 AJAX Permission Denied On IE?

:

이 질문을 참조하십시오 서버에 POST를 작성하십시오), 서버가 POST를 수행하게하면 문제점이 해결됩니다.

관련 문제