2011-10-27 2 views
2

내 사이트의 사용자는 자신의 html을 작성할 수있는 페이지가 있습니다. 나는 이것을 주문 목록, 스타일 등과 같은 것들에 사용하기를 원하지만 어떤 사람들은 허용 할 수없는 스크립트를 삽입하려고 시도 할 것이다.아약스 쿼리에 대한 요청 유효성 검사 사용 하시겠습니까?

사용자 설명을 업데이트하는 메커니즘은 ajax를 통해 이루어집니다. 자바 스크립트에서 나는 에 함수를 호출하는 파일 ajax.ashx에 요청을 보냅니다. 함수에서 사용자의 새로운 설명으로 SQL Server를 업데이트합니다.

설명이 서버에 제출되기 전에 함수의 입력을 어떻게 검증 할 수 있습니까? 나는 스크립팅과 관련이 있지만, 일반적인 HTML 태그는 <p>과 같이 남겨두고 싶습니다. 이 모든 것을 처리 할 수있는 도구가 있습니까?

답변

1

왜 사용자가 대신 사용자 지정 형식/언어를 사용하는 것을 허용하지 다음 (예 Markdown에 대한)이 서버 측 HTML로 구문 분석? 이렇게하면 실제 요청 내에서 발견되는 모든 스크립트/html 코드가 유효하지 않으므로 스트립 (또는 인코딩) 될 수 있습니다. 이것은 또한 미리 결정된 태그 목록 만 허용한다는 이점을 제공합니다. 기본적으로 StackOverflow와 동일한 기능을 제공합니다.

+1

그게 좋은 생각이야. – Oliver

0

출력을 HttpServerUtility.HtmlEncode으로 설정하는 것이 좋습니다. HTML이 아닌 스크립트 태그를 구문 분석하는 것은 좋은 방법이 아닙니다. 아래 참조 참조 :

XSS (Cross Site Scripting) Cheat Sheet

+0

HtmlEncode는 모든 태그를 인코딩 할 수 있기 때문에 사용할 수 없다고 생각합니다. 일부 태그는 남아 있지만 스크립트 태그는 제거해야합니다. – Oliver

+0

스크립트 태그를 제거하기 만하면 문제가 발생할 수있는 HTML을 구문 분석하고 솔루션이 일반적인 XSS 공격을 중단시키지 않는다는 것을 알려주는 것입니다. ASP.NET MVC가 모든 출력을 기본적으로 인코딩하는 이유가 있습니다. :) –

관련 문제