2010-01-11 6 views
5

일부 무료 응답 텍스트 필드가 있는데 SQL 주입을 방지하기 위해 제거하는 방법을 잘 모르겠습니다. 어떤 아이디어?기존 ASP의 무료 응답 텍스트 필드에 SQL 주입 방지

+0

http://stackoverflow.com/questions/tagged/sqlinjection을 검색했다면 답을 직접 찾았을 것입니다. –

+1

@ 존 당신은 http://stackoverflow.com/questions/tagged/sql-injection+asp-classic을 의미하지만 아직 그것들 중 하나가 복제 된 것으로 표시되었습니다. – cregox

답변

16

사용자 입력을 쿼리에 연결하는 대신 parameterized query을 만듭니다. 여기

은 기존 ASP에서이 작업을 수행하는 방법이다 : http://blog.binarybooyah.com/blog/post/Classic-ASP-data-access-using-parameterized-SQL.aspx

그것은 당신이 SQL 주입로부터 100 % 안전 할 수있는 유일한 방법은 사용자 입력을 사용하는 SQL 문을 매개 변수화하는 점에 유의하는 것도 중요, 심지어 일단 그것이 데이터베이스에있다. 예 : 매개 변수가있는 쿼리 나 저장 프로 시저를 통해 사용자 입력을 받는다고 가정 해보십시오. 당신은 삽입물에 안전 할 것입니다, 그러나 당신은 그 입력을 사용하는 길 아래의 어떤 것도 매개 변수를 사용하는지 확인해야합니다. 사용자 입력을 직접 연결하는 것은 DB 내부를 포함하여 어디서나 나쁜 생각입니다.

+2

그리고 고전적인 ASP를 작성해야한다면, JScript로 해보십시오. 훨씬 좋네요! 그리고 IIRC는 더 나은 성과를냅니다. – RedFilter

+2

@OrbMan : 어떻게 그게 다 관련이 있니 ?? JScript는 당신을 고립시키는 것에 신경 쓰지 않는다면 더 좋지만 ASP의 대부분은 VBScript에 있습니다. 솔직히 고전적인 ASP를 VBScript에서 사용해야한다면, 예제를 통합하는 것이 훨씬 쉽고 다른 ASP 개발자가 읽기 쉽습니다. – AnthonyWJones

0

storedprocedure으로 전화하십시오.

수정 : 설명하기 만하면됩니다. sp에서 동적 SQL을 작성하는 것은 물론 응용 프로그램에서 수행하는 것만 큼 위험 할 수 있지만 사용자 입력을 쿼리에 바인딩하면 여기에 설명 된 것처럼 SQL 삽입에 대한 보호가 제공됩니다 (오라클 관련 토론이지만 원칙은 다른 곳에 적용됩니다).

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:23863706595353

그것은 문제가 동적 SQL 아니다

(모든 SQL 실제로 오라클 동적입니다 -! 프로 * C/PLSQL 심지어 정적 SQL)를 참조하십시오. 이문제 인이 SQL의 " 구조"입니다. 사용자가 입력 한 내용이 인 경우 쿼리에 넣어야합니다 ( 은 연결되지 않음). 두 번째로 사용자 입력을 SQL 에 연결합니다. 마치 코드를 전달할 수있는 능력을 부여한 것입니다. 이 코드를 실행합니다. 평범하고 단순합니다.

+3

믿지 마십시오. 스토어드 프로 시저가 SQL 인젝션 취약점으로부터 보호한다는 것은 신화입니다. 프로 시저에서 응용 프로그램 코드처럼 안전하지 않은 동적 SQL 쿼리를 빌드 할 가능성이 있습니다. –

+0

나는 sp 내에서 동적 SQL을 구현하는 것을지지하지 않지만 sp 내에서 매개 변수화 된 명령문에 텍스트 필드 항목을 제공합니다. – davek