2011-12-21 4 views
0

요청을 제출하기 위해 사이트의 여러 영역에 InfoPath 양식이 구현되어 있습니다. 예를 들어 사용자가 메시지에 답장 할 수있는 스탭에게 질문 할 수있는 요청 양식이 있습니다.InfoPath 양식에서 교차 사이트 스크립팅을 방지하는 방법

누군가 InfoPath 컨트롤 (제목 또는 메시지 본문) 중 하나에서 JavaScript로 입력하고 InfoPath 양식을 통해 데이터를 제출할 가능성이 있습니다. 그런 다음 JavaScript 코드가 해당 페이지에서 경고 메시지를받는 직원 측에서 실행됩니다. 나는 많은 것을 연구했지만 확실한 답을 찾지 못했습니다.

이러한 유형의 유효성 검사를 위해 XSS를 제한/방지하는 직접적인 방법이 있습니까? 어떤 제안이라도 도움이 될 것입니다.

미리 감사드립니다.

당신은 예를 들어, 텍스트를 인코딩 할 수
+1

직원에게 제공되는 HTML을 어떻게 생성합니까? –

+0

스태프 페이지는 메시지 페이지와 똑같이 코딩되어 있습니다. ASP.NET 및 C#으로 별도의 솔루션으로 작성된 별도의 페이지입니다. 데이터는 서버를 통해 전달됩니다. 이것은 사용 장소의 예일 뿐이므로 사이트의 다양한 섹션에 InfoPath 양식이 있습니다. XSS를 InfoPath 양식으로 처리하는 방법에 대해 궁금합니다. 양식이 일반 텍스트로 데이터를 제출하는 경우 문제가 될 것이라고 생각하지 않지만 일부 컨트롤은 서식있는 텍스트이므로 누군가가이를 통해 스크립트를 보낼 수 있다고 걱정합니다. – easyeman77

답변

0

,

var titleValue = '<'+'script type="text/javascript">alert(123);<'+'script>', 
      encodedValue = [], 
      c; 
     for (var i = 0;i < titleValue.length;i ++) { 
      c = titleValue.charAt(i); 
      if (c == '<') 
       encodedValue.push('&lt;'); 
      else if (c == '>') 
       encodedValue.push('&gt;'); 
      else if (c == '&') 
       encodedValue.push('&amp;'); 
      else if (c == '"') 
       encodedValue.push('&quot;'); 
      else 
       encodedValue.push(c); 
     } 
     alert('encoded value is: ' + encodedValue.join('')); 

감사합니다,

0

직원의 HTML은 자바 스크립트를 통해 생성되는 경우에, 당신은 모든 HTML 마크 업을 방지하기 위해 innerText와 사용할 수 있습니다 해석 :

document.getElementById('text').innerText = untrustedOutput; 

서버 측이라면 benban123을 볼 수 있습니다. 대답하고 그것을 당신의 언어학에 적용하십시오. PHP에서는 다음을 사용합니다.

htmlentities($text); 

(참조 : http://www.php.net/manual/en/function.htmlentities.php). 하지만 그 효과가 확실하지는 않지만 XSS는 수없이 많습니다.

EDIT : 텍스트가 자바 스크립트 함수 alert(msg)을 통해서만 표시되는 것이라면, 당신이 해석되지 않기 때문에 안전하다고 생각합니다. (아마도 개행 문자/n을 제외하고).

관련 문제