2010-02-20 5 views
0

사용자가 ASP.NET TextBox에서 HTML 태그를 입력 할 수있는 요구 사항이 있습니다. 텍스트 상자의 값이 데이터베이스에 저장되고 입력 한 다른 페이지에 을 표시해야합니다. 그래서 나는 Page 지시문에 ValidateRequest="false"을 설정했다. 이제 문제는 때 사용자 입력 뭔가를해야만 같은 :TextBox에서 HTML 입력을 처리하는 방법

<script> window.location = 'http://www.xyz.com'; </script> 

지금은 값이 데이터베이스에 저장,하지만 난 "http://www.xyz.com"에 나를 리디렉션 다른 페이지에 그 값을 표시하고 때 자바 스크립트로 분명하다 그것을 잡는다. 그러나 그가 입력 한 것을 정확하게 보여줄 필요가있는 해결책을 찾아야합니다. Server.HtmlEncode를 생각하고 있습니다. 내 요구 사항에 대한 지침으로 안내해 줄 수 있습니까

+1

크로스 사이트 스크립팅이 될 수 있습니다 : 당신은 사용자 입력을 디코딩 사용자에게 컨텐츠를 표시하고 화면에 넣어 시간이 올 때, 이제

Server.HtmlEncode(userinput) 

을 수행하여이 문제를 쉽게 달성 할 수있다 곰. rockinthesixstring은 Telerik (DevExpress에서 제공하는 HTML 편집기)과 같은 상용 HTML 편집기를 사용하여 좋은 제안을 다시합니다. 행운을 빈다. 누군가가 크로스 사이트 스크립팅이나 SQL 주입 공격을 시도 할 것으로 기대하는 것처럼 항상 행동하는 것이 가장 좋습니다. 그들이 (당신이 "당신의"사용자이기 때문에 그들이 아니라고 가정 할 때) 절대로 그것을 자르지 않을 것입니다. –

답변

1

항상 항상 사용자의 입력을 인코딩 한 다음 데이터베이스에 저장하십시오.

Server.HtmlDecode(userinput) 
1

사용자에게 다시 출력하기 전에 모든 입력을 인코딩해야하며 사용자가 제출하도록 허용 한 HTML의 종류에 대한 허용 목록 기반 방식을 구현하는 것을 고려할 수 있습니다 .

모든 종류의 악성 입력을 식별하고 블랙리스트에 추가하는 대신 p, br, em, strong, a를 허용하는 규칙을 작성하는 것이 훨씬 쉽기 때문에 화이트리스트 접근 방식을 제안합니다.

일반 HTML 허용 대신 MarkDown (StackOverflow에서 사용)을 사용하는 것이 좋습니다.

+0

@Adam : 사용자를 제한하고 싶지 않았으며 텍스트 상자에 html 태그를 입력 할 수있었습니다. – Vijjendra

0

HTML을 생성하는 동안 일부 문자를 이스케이프 처리해야합니다 ('<' -> &lt;, '>' -> &gt;, '&' -> &amp;). 이렇게하면 사용자가 입력 한 내용이 정확하게 표시됩니다. 그렇지 않으면 HTML 파서가 HTML 태그를 인식하여 실행할 수 있습니다.

0

모든 입력에 HTMLEncode을 사용해 보셨나요? 나는 개인적으로 문자를 내 보내기 전에 문자를 이스케이프 처리하는 Telerik RadEditor을 사용한다 ... 그런 식으로 시스템은 예외에 대해 barf를 사용하지 않는다.

여기에는 동일한 줄에 SO question이 있습니다.

0

당신은 당신 때문에 당신이 설명한 것과 같은 취약점을 지원하지 않을 HTML tags 살펴과 같은

  • 스크립트

  • IMG

  • 은 iframe

    을 가져야한다
  • 애플릿

  • 객체

  • 1,515,

  • 는 최고의 "<"로

  • 형태 버튼 입력

및 대체를 포함 "& LT;".

또한 </몸을 교체> 등 CKEditor 같은 </HTML>

HTML 편집기는 잘 형성 XHTML을 필요로 할 수 있도록하고, define tags 입력에서 제외 될 수 있습니다.

관련 문제