문제

입력 처리를위한 ASP (VBSCRET)에서 가장 좋은 방법 (또는 최소한 가장 일반적인 방법)은 무엇입니까? 내 주요 관심사는 HTML/JavaScript 주입 및 SQL 주입입니다. PHP와 동등한 것이 있습니까? htmlspecialchars 또는 addslashes, et cetera? 아니면 문자열 교체 함수와 같은 것으로 수동으로해야합니까?

도움이 되었습니까?

해결책

결론은 이것입니다.

  1. 페이지에 쓰기 전에 항상 HTML-Encode 사용자 입력을 사용하십시오. Server.HTMLEncode() 당신을 위해 그렇게합니다.
  2. 항상 매개 변수화 된 쿼리를 사용하여 데이터베이스와 인터페이스하십시오. 그만큼 ÀDODB.Command 그리고 ADODB.CommandParameter 객체는 여기에서 올바른 선택입니다.
  3. 버전 6 이상이 아닌 한 페이지를 렌더링하는 IIS 서버에서 항상 URLSCAN 유틸리티 및 IIS 잠금 장치를 사용하십시오.이 도구는 더 이상 이러한 도구가 필요하지 않습니다.

지점 1과 2를 고수하면 노예로, 나는 잘못 될 수있는 것을 많이 생각할 수 없다.

대부분의 취약점은 사용자 입력을 올바르게 인코딩하지 않거나 SQL 문자열을 구축하지 못합니다. 어떤 이유로 html-encoding 사용자 입력이 당신의 방식으로 서있는 지점에 오면, 당신은 당신의 응용 프로그램에서 설계 결함을 발견했습니다.

다른 팁

Tomalaks에 또 다른 요점을 추가 할 것입니다.

SQL 코드에서 필드 값을 연결하는 것을 피하십시오. 즉, 저장된 프로 시저가 문자열에 일부 SQL을 빌드하여 이후에 실행할 수 있습니다. 텍스트 필드 값이 구조의 일부로 사용되지 않는 한 괜찮습니다.

명령 매개 변수는 값이 원치 않는 SQL을 실행하는 데 값을 입력하도록 설계된 SQL 코드를 보호 할 수 있지만 원치 않는 SQL이 데이터베이스에서 데이터가 될 수 있습니다. 이것은 첫 번째 수준의 빈번성입니다. 필드의 값이 저장된 절차 내에서 일부 SQL 스트링 연결에 사용되는 경우 2 단계 주입 Vunerability가 존재합니다.

또 다른 고려 사항은 이것이 최소한의 보호라는 것입니다. 그 일은 공격 시도를 해치는 것입니다. 그러나 많은 경우 에이 데이터 입력을 방지하는 시스템을 추가하는 것이 더 나을 수 있습니다.

입력 유효성 검사가 중요 해지는 곳입니다. 나는 당신을 위해 이것을하는 도구를 모르지만 몇 가지 간단한 정규 표현이 도움이 될 수 있습니다. 예를 들어, "< w+"는 필드에 HTML 태그를 포함하려는 시도를 감지합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top