2009-04-03 5 views
3

사용자가 데이터베이스의 정보를 찾아보고 변경할 수있는 Asp.Net 프로그램 UI를 만들고 있습니다. 이런 이유로 모든 형식의 문자를 사용할 수 있어야하지만 프로그램 HTML과 SQL 자체를 안전하게 유지해야합니다. 그 이유는 '<'과 같은 위험한 문자를 html 코드로 대체하는 자체 빌드 방식을 사용하고 있습니다 (페이지로드시 발행되므로 텍스트 기능이 없으므로 처리됩니다). 그곳에).Asp.Net Validaterequest False

내 딜레마 :이 작업을 수행하려면 주제별로 Validaterequest 매개 변수를 사용하지 않도록 설정해야합니다. 프로그램에서 이의를 제기합니다. False로 설정했을 때 발생할 수있는 결과는 무엇입니까?

SQL 쿼리 이미 parametirized하고, 나는 단지 다음과 같은 표시를 필터링 :

& # < > " ’ % @ = 

질문 : 나는 위협 열어 프로그램을 떠납니다 내가 위의 문자를 처리 할 경우에도? 기본적으로이 프로그램은 소수의 사용자 만 프로그램에 액세스 할 수있는 인트라넷 응용 프로그램입니다. 그럼에도 불구하고 액세스하는 정보는 매우 중요하므로 의도하지 않은 사고를 방지해야합니다. 나는 글자 그대로 Validaterequest가하는 일이 무엇인지 모릅니다.

편집 : 답글을 입력하십시오. 처음에는 계획대로 진행할 것입니다.

답변

4

Validate Request이 (가) 찾으시는 주요 내용은 < 및 > 자입니다. 스크립트를 게시하는 악의적 인 사용자 및/또는 사용자 사이트에 사이트를 열지 못하게 할 수 있습니다.

HTML 마크 업을 제거한 코드에 만족하거나 처리하지 않고 저장된 데이터를 웹 사이트에 다시 표시하지 않으면 확인해야합니다.

2

기본적으로 특수 문자를 대체하여 사용자 입력의 유효성을 검사하면 일반적으로 더 많은 문제가 발생하고 실제로 문제가 해결되지는 않습니다. 그것은 모두가 잘 아는 사용자는 여전히 ASCII/바이너리 자동화 된 공격을 할() 함수 CONVERT를 사용하는 경우에도 XP_ 명령을 사용하거나 수에 대해 생각하는 사용자가 입력, 때로는 그들이

& # < > " ’ % @ = 

같은 특수 문자가 필요합니다 어떤 따라 달라집니다. 모든 입력을 매개 변수화했다면 괜찮을 것입니다.

1

나는 SQL 인젝션 공격뿐만 아니라 크로스 사이트 스크립팅과 JS 실행 공격에 대해서도 문제가 있다고 생각한다. 이것을 방지하려면 매개 변수가있는 쿼리 만 사용할 수는 없으므로 사용자가 보내는 html의 "sanitization"을 수행해야합니다! 어쩌면 html과 같은 도구가 도움이 될 수 있습니다.

관련 문제