ASP/VBScript의 주사를 방지하는 방법은 무엇입니까?
-
07-07-2019 - |
문제
입력 처리를위한 ASP (VBSCRET)에서 가장 좋은 방법 (또는 최소한 가장 일반적인 방법)은 무엇입니까? 내 주요 관심사는 HTML/JavaScript 주입 및 SQL 주입입니다. PHP와 동등한 것이 있습니까? htmlspecialchars
또는 addslashes
, et cetera? 아니면 문자열 교체 함수와 같은 것으로 수동으로해야합니까?
해결책
결론은 이것입니다.
- 페이지에 쓰기 전에 항상 HTML-Encode 사용자 입력을 사용하십시오.
Server.HTMLEncode()
당신을 위해 그렇게합니다. - 항상 매개 변수화 된 쿼리를 사용하여 데이터베이스와 인터페이스하십시오. 그만큼
ÀDODB.Command
그리고ADODB.CommandParameter
객체는 여기에서 올바른 선택입니다. - 버전 6 이상이 아닌 한 페이지를 렌더링하는 IIS 서버에서 항상 URLSCAN 유틸리티 및 IIS 잠금 장치를 사용하십시오.이 도구는 더 이상 이러한 도구가 필요하지 않습니다.
지점 1과 2를 고수하면 노예로, 나는 잘못 될 수있는 것을 많이 생각할 수 없다.
대부분의 취약점은 사용자 입력을 올바르게 인코딩하지 않거나 SQL 문자열을 구축하지 못합니다. 어떤 이유로 html-encoding 사용자 입력이 당신의 방식으로 서있는 지점에 오면, 당신은 당신의 응용 프로그램에서 설계 결함을 발견했습니다.
다른 팁
Tomalaks에 또 다른 요점을 추가 할 것입니다.
SQL 코드에서 필드 값을 연결하는 것을 피하십시오. 즉, 저장된 프로 시저가 문자열에 일부 SQL을 빌드하여 이후에 실행할 수 있습니다. 텍스트 필드 값이 구조의 일부로 사용되지 않는 한 괜찮습니다.
명령 매개 변수는 값이 원치 않는 SQL을 실행하는 데 값을 입력하도록 설계된 SQL 코드를 보호 할 수 있지만 원치 않는 SQL이 데이터베이스에서 데이터가 될 수 있습니다. 이것은 첫 번째 수준의 빈번성입니다. 필드의 값이 저장된 절차 내에서 일부 SQL 스트링 연결에 사용되는 경우 2 단계 주입 Vunerability가 존재합니다.
또 다른 고려 사항은 이것이 최소한의 보호라는 것입니다. 그 일은 공격 시도를 해치는 것입니다. 그러나 많은 경우 에이 데이터 입력을 방지하는 시스템을 추가하는 것이 더 나을 수 있습니다.
입력 유효성 검사가 중요 해지는 곳입니다. 나는 당신을 위해 이것을하는 도구를 모르지만 몇 가지 간단한 정규 표현이 도움이 될 수 있습니다. 예를 들어, "< w+"는 필드에 HTML 태그를 포함하려는 시도를 감지합니다.