xSLTranform을 사용하여 xml 파일을 dotNet의 html로 변환합니다. xml의 노드 값을 html 태그 내용과 속성으로 변환합니다.XSLT 삽입으로부터 보호
.Net DOM 조작을 사용하여 노드의 InnerText 속성을 임의의 악성 텍스트로 설정하여 XML을 작성합니다. 지금은 악의적으로 제작 된 입력 문자열로 인해 html이 안전하지 않습니다. 일부 자바 스크립트가 사용자로부터 나와서 출력 html의 링크 href 속성으로가는 길을 찾을 수 있다는 의미에서 안전하지 않습니다.
질문은 간단합니다. 내 텍스트를 InnerText 속성에 할당하기 전에 텍스트와 관련시켜야하는 것은 무엇이 있습니까? 나는 InnerXml 대신에 InnerText에 할당하는 것이 텍스트의 필요한 모든 위생 처리를 수행 할 것이라고 생각했지만, 그렇지 않은 것 같습니다.
이 작업을 안전하게 수행하려면 변환에 특별한 특성이 있어야합니까? 내가 알아야 할 모든 .net 특정주의 사항은 무엇입니까?
감사합니다.
내부 텍스트 대신 단순히 노드 값을 설정하면 동일한 결과를 얻지 않겠습니까? 'HtmlEncode()'는 나에게 불필요한 것처럼 보입니다. – Tomalak
@Tomalak, 주요 아이디어는 텍스트를 추가하기 전에 인코딩하는 것입니다 (두 번 인코딩 할 것입니다). 추가하려면, .InnerText (OP가 말한 것처럼) 또는 .Value를 사용할 수 있습니다. –
Hum ... 왜 HtmlEncode에서 한 번, InnerText를 설정 할 때 두 번 인코딩해야합니까? –