2011-01-03 6 views
1

JavaScript (클라이언트 측)에서 HTML ENGODE가 필요합니다. Reqeust.Validation을 우회하여 TextBox에서 문자열 (사용자가 HTML 태그를 삽입 할 수있는 위치)이 필요합니다.JavaScript로 문자열 인코딩

자바 스크립트는 문자열을 인코딩하고 라벨에 인코딩 된 코드를 표시해야합니다.

 <asp:TextBox ID="uxValueInput" runat="server"></asp:TextBox> 
     <br /> 
     <asp:Label ID="uxResultEncoded" runat="server" Text="Label"></asp:Label> 
     <asp:Button ID="uxEncodeButton" runat="server" Text="Button" /> 

저는 JavaScript에서 새로 도입되었지만 웹에서 다른 스크립트를 시도했지만 성공하지 못했습니다. 정말 간단한 예제를 게시하여 어떻게 작동하는지 이해할 수 있습니까? 감사!

+2

하지 마십시오. 일관된 방식으로 인코딩해야하는 경우 완벽하게 제어 할 수있는 서버에서 수행하십시오. ASP.NET은 그렇게하는 것을 막을 정도로 나쁘지 않습니다. – Quentin

+0

인 코드가 무엇입니까? – deceze

+0

죄송합니다. HTML 인코딩이 필요합니다. – GibboK

답변

3

저는 David와 함께합니다. Dorland :이 클라이언트 쪽에서는 요청 확인 (here's an article saying how)을 사용하지 마십시오. 그러나 그렇게한다면 Anti-XSS 또는 이와 유사한 라이브러리를 사용하여 ASP.Net이 사용자를 보호하려고 시도하는 것을 막을 수 있습니다. 클라이언트에 최소한의 HTML 인코딩을 수행하기위한 정품 사용 사례가있는 경우

그러나, 당신은이 작업을 수행 할 수 있습니다 작동하는 방법

var escapes = { 
    '<': '&lt;', 
    '>': '&gt;', 
    '&': '&amp;' 
}; 
var raw = "Hi, I'm an <scr" + "ipt src='http://evil.example.com/attack.js'><\/script> evil & malicious attack."; 
var encoded = raw.replace(/[<>&]/g, function(m) { 
    return escapes[m]; 
}); 
다음

Live example

가있다 :

  1. 원시 문자를 HTML 엔터티에 매핑하는 escapes이라는 맵이 있습니다 (따라서맵핑).3210 내지 &lt; 등).
  2. 원시 문자열에는 악성 스크립트가 있습니다.
  3. 우리는 <, >& 문자를 모두 검색하고 해당 엔티티로 바꾸기 위해 String#replace과 정규 표현식을 사용합니다. 함수를 String#replace에 두 번째 인수로 전달하면 매치마다 호출되고 반환 값이 대체됩니다. 정규식, /[<>&]/g은 "문자열 내에서 <, > 또는 & (g 플래그)를 찾습니다"라는 의미입니다.
+0

감사합니다. T.J. 하지만 요청 유효성 검사를 비활성화 할 수 없으며 Javascript로 ENCODE HTML이 필요합니다. 그것을하는 방법을 알고 있습니까? 그것은 꽤 쉬워야합니다. 그러나 나는 당신의 도움이 필요하기 때문에 어떤 자바 스크립트도하지 않았습니다 :-) – GibboK

+0

@GIbboK : 아주 기본적인 예제를 추가했습니다. –

+0

예를 들어 주셔서 감사합니다. – GibboK