2012-04-24 4 views
1

몇 가지 크로스 사이트 스크립팅 취약점이있는 소스 코드가 있습니다. 브라우저가 서버 쪽 Javascript 및 Classic ASP (IIS 7.0)를 실행중인 서버로 데이터를 보낼 때 입력 유효성 검사가 수행되지 않습니다.자바 스크립트 재정의 Request.Form ("foo") 보안 (XSS)

내 질문은, 거기에 Request.Form("foo") 개체/메서드를 재정의하는 방법이 너무 너무 sanitization 함수를 호출하고 금지 된 JS/HTML 없애 수 있나요? 나는 모든 곳의 모든 파일을 찾아서 바꾸고 싶지 않다. Request.Form이 호출된다. 나는 더 우아한 뭔가가 있기를 바랬다.

모든 의견을 환영합니다.

+0

당신은'var oldRequestForm = Request.Form; Request.Form = function (param) {return yourSanitization (oldRequestForm (param))}' –

+0

방금 ​​했어요. 일하지 않았어. –

+0

@JuanMendes 아니, 불가능합니다. _find_ 및 _replace_ 대신 _search_ 및 _replace all_를 시도하십시오. –

답변

2

회원 들께서는 Request.Form 명의 회원이 변경 될 것으로 생각되지 않습니다. 당신이 할 수있는 일

는 부분적인 해결책으로 등 Request.Form, Request.QueryString을 통해 루프 (AN include 지시어를 사용하여, 예를 들어) 모든 페이지에 먼저 실행하는 코드를 작성하는 것입니다, 그것은 의심의 코드를 발견하면 , 코드 실행을 종료합니다 (Response.End). 이 솔루션은 입력을 실제로 못살게 굴지 않기 때문에 부분적인 것입니다. 의심스러운 텍스트를 발견하면 실행을 중단합니다.

다른 옵션 :Request.Form에 평행 한 배열을 만듭니다. Request.Form과 동일한 멤버로이 배열을 채우지 만 이번에는 소독되었습니다. 그런 다음 전체 코드 기반에서 찾기 및 바꾸기를 빠르게 수행하고 Request.Form을 사용자 정의 배열 변수로 변경하십시오.

+0

OP를 교체/I가 더 나은 옵션이라고 생각하는 교체합니다. 내가 페이지의 상단에있는'Request.Form'에 대한 루프를 포함하는 것에 대한 여러분의 제안을 좋아합니다. –

1

전체 Request 개체를 다른 COM 개체로 바꾸는 방법은 있지만 그 미친 솔루션이며 Form을 사용하는 모든 ASP 파일에는 일반적인 맨 위 포함 파일이 필요합니다. 응용 프로그램 수준에서 Request 개체 또는 해당 구성원을 전역으로 대체 할 수 없습니다.

문제에 대한 올바른 솔루션, 당신의 문에도 불구을 "모든 곳에서 모든 단일 파일에서 찾기 및 바꾸기를 수행하도록 싶지 않다", 글로벌 등의 교체 수행하는 것입니다.

많은 수의 .asp 파일이 있지만 폴더 트리의 각 ASP 파일을 열어 포함 줄을 추가하고 Request.Form을 바꾸는 간단한 프로그램을 작성하는 것만으로는 충분하지 않습니다.

관련 문제