2009-09-15 5 views
5

텍스트 상자에 html 또는 javascript를 입력하는 사용자를 중지하고 싶습니다.asp.net 텍스트 상자에서 스크립트 확인

입력을 구문 분석하고 천사 브래킷을 확인할 수 있습니다. 이 작업을 수행하는 더 좋은 방법이 궁금한가요?

+0

좋은 질문 - 그것은 당신이 보안에 대해 생각하고 있음을 보여줍니다. +1. – David

답변

5

나는 엔젤 브래킷을 엔코 드 된 엔젤 브래킷으로 대체하는 것이 대부분의 문제를 해결한다는 것을 발견했다. 사람들이 사이트 간 스크립트를 작성할 수있는 모든 방법에 대한 reference입니다. HTML이나 Script의 맛을 막을 수있는 정규 표현식을 만드는 것은 거의 불가능합니다.

+1

+1 무엇이든 '확인'하지 말고, 나가는 중에 제대로 탈출하십시오. 사용자는 꺾쇠 괄호를 입력 할 수 있어야하며 다음과 같이 페이지에 일반 꺾쇠 괄호로 표시되어야합니다 : < >. 올바른 방법은 HtmlEncode (.NET 컨트롤이 템플릿에서 자동으로 이스케이프 처리되지 않는 경우)라고하며, 앰퍼샌드 및 따옴표 (특성 값의 텍스트)에도 영향을줍니다. – bobince

2

정규식 검사기를 사용하여 입력을 확인할 수 있습니까?

3

Page.ValidateRequest = true로 설정하면 중지됩니다.

.net 버전 1.1 이후 (내 생각에) 이것은 기본적으로 true로 설정됩니다.

+1

ValidateRequest는 완전히 가짜이며, 문제의 위험한 오해를 배제합니다. 이는 입력 레이어에서 출력 문제 (이스케이프)를 수정하려고한다는 점에서 PHP의 훨씬 더 조롱 된 magic_quotes_gpc와 유사합니다. 마술 따옴표 같이, 그것은 당신의 어플리케이션을 붕괴시킵니다. (예를 들어, 여기에 있다면 HTML ''에 관해서는 이야기 할 수 없을 것입니다.) 실제로 보안을 보장하지는 않습니다. (출력이 모두 직접적으로 오는 것은 아닙니다. 입력 및 필터를 속일 수 있음). – bobince

+0

나는 당신이 말하는 것을 부정하지 않고 거의 모든 우리의 응용 프로그램에서 전역 적으로 꺼져 있으며 모든 입력/출력은 수동으로 유효성이 검사됩니다. 그러나이 질문은 "사용자가 HTML이나 자바 스크립트를 텍스트 상자에 입력하는 것을 중단하고 싶습니다." ValidateRequest가이를 수행합니다. –

+0

실제로. 그것은 옳은 대답입니다 ... 단지 그것이 올바른 질문이 아닐 수도 있습니다! – bobince

1

Page.ValidateRequest는 사용 중지하지 않는 한 중지합니다.

그러나 OWASP 지침 (거의 모든 유능한 보안 지침)에서는 유효성 검사에서 잘못된 문자를 제한해서는 안되지만 특별히 허용되는 문자 만 사용되도록 필터링해야한다고 설명합니다.

내가 여기 시작하고 나중에 참조 할 수 있도록 사이트를 즐겨 찾기에 추가 할 좋은 보안 코딩 관행에 대한

http://www.owasp.org/index.php/Top_10_2007-A1

http://en.wikipedia.org/wiki/Secure_input_and_output_handling. http://www.owasp.org/index.php/Top_10_2007

0

이 html 유틸리티를 발견했습니다. 이 코드는 입력이 허용 된 흰색 태그 목록을 사용합니다. 그런 다음 스크립트는 입력 텍스트의 서식을 지정하고 크로스 사이트 스크립팅 공격에 사용될 수있는 태그와 스크립트를 제거합니다.

당신의 목적을 위해 당신은 흰색 목록에 태그를 사용할 수 없습니다.

Html utilty

관련 문제