2010-04-27 1 views
2

PHP에서 오는, 내가 asp에 대한 사전 지식 없이이 1000 파일 asp 고전적인 웹 애플 리케이션에 대한 몇 가지 SQL 청소를해야하고 내가 그것을 해킹에 도착하기 전에 어떤 주요 gotchas 알고 싶습니다 asp 공백 수정을 준비/만들기 asp classic/sql 매개 변수에서 코딩하는 동안 조심하십시오. 좋은 개요 자원은 무엇이며, 무엇을주의해야합니까?asp classic에서 SQL injection에 대해 매개 변수화해야하는데, 변경하기 전에 어떤 점을 알아야합니까?

+0

가능한 복제본 http://stackoverflow.com/questions/2113262/sql-injection-on-classic-asp-pages-with-parameterized-queries-text-fields –

답변

1
  1. 나는 모든 데이터 액세스 또는 대부분의 데이터 액세스를 캡슐화하는 함수를 만들 것입니다. 이전 프로젝트에서는 SQL 문을 사용하고 Recordset 인스턴스를 반환하는 GetRecordset 함수를 만들었습니다. 이 함수에서는 데이터베이스를 열고 쿼리를 실행하고 데이터베이스를 닫은 다음 레코드 세트를 반환합니다. 이렇게하면 연결이 닫히게됩니다.

  2. SQL 문에 매개 변수를 정리하는 함수를 만들거나 매개 변수화 된 쿼리를 사용하는 것이 좋습니다. 쿼리를 다시 쓰고 싶지 않아서 연결을 사용하지 않는 코드에서, 사용하는 함수는 vbVarType 매개 변수를 필요로하므로 전달 된 값이 표시된 유형인지 확인하고 날짜가 그 형식으로 저장되도록합니다. 서버 문화에만 국한된 것은 아닙니다.

  3. 작은 따옴표 뒤에 큰 따옴표가 오는 경우를 검색합니다. 다음은 그것도 모두와 Select ... Where StringOrDateCol = '" & Request.QueryString("GodKnowsWhat") & ...

를 찾고 있습니다, 당신은 모든 것을 잡을 수 없습니다. 예를 들어, Select ...Where NumericCol = " & Request.QueryString("GodKnowsWhat")을 잡지 않을 것입니다. 마지막 검색은 Select, Update, InsertDelete을 검색하고 각 SQL 문을 검사하여 위의 # 2에서 작성한 기능을 사용하는지 확인하는 것입니다.

3

문자열 연결을 사용하여 SQL 쿼리에 매개 변수 값을 추가하지 않았는지 확인하십시오. ADO 명령 및 매개 변수 개체를 사용하는 방법에 대해 알아보십시오. 항상 SQL 쿼리 문자열에서 자리 표시자를 사용하고 명령에 매개 변수 개체를 추가하여 자리 표시 자의 값을 제공하십시오.

1

동의 함 ... place-holder와 예 : SqlDb.Command.Parameters.Add()를 통한 매개 변수화 된 쿼리는 큰 도움이 될 것입니다 ... 선택에 의존하지 않고 삽입 및 삭제합니다.

관련 문제