SQL 인젝션은 소위 그 수준의 해커 마스터에 의해 수행되었으며 이제 대부분의 해커 침입이 SQL 인젝션을 기반으로 하는 것으로 나타났습니다. 이봐, 누가 쉽게 시작할 수 있는지 알았어, 이제 헛소리는 하지 말자. 일반적인 SQL 주입 방지 프로그램을 작성하면 일반 http 요청은 가져오기 및 게시에 지나지 않으므로 게시물의 모든 불법 문자나 파일의 가져오기 요청에 있는 매개변수 정보를 필터링하는 한 다음과 같은 작업을 수행할 수 있습니다. http 요청 정보 필터링을 구현하여 판단합니다. SQL 주입 공격을 받을 수 있습니까?
IIS가 asp.dll에 전달한 get 요청은 문자열 형식입니다. 데이터가 Request.QueryString에 전달되면 asp 파서는 Request.QueryString의 정보를 분석한 다음 각 배열의 내용을 다음과 같이 구분합니다. "&" 데이터는 다음과 같이 차단됩니다.
먼저 요청에 다음 문자가 포함될 수 없도록 정의합니다.
'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate |char|declare
Each
문자는 "|"로 구분된 후 얻은 Request.QueryString을 확인합니다. 구체적인 코드는 다음과 같습니다.
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = 분할(SQL_Injdata,"|")
Request.QueryString<>"" 그러면
각 SQL_Get In Request.QueryString에 대해
SQL_Data=0인 경우 Ubound(SQL_inj)로
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 그러면
Response.Write "<스크립트 언어=****>alert('월드 무비 얼라이언스 SQL 범용 안티 주입 시스템 프롬프트 ↓nn 매개 변수에 잘못된 문자를 포함시키지 말고 주입을 시도하세요!'); History.back(- 1)</ 스크립트>"
응답.끝
종료하면
다음
다음
End If
이런 방식으로 get 요청의 삽입 차단을 구현했지만 게시 요청도 필터링해야 하므로 배열 형태로도 존재하는 request.form을 계속 고려해야 합니다. 또 다른 루프 판단을 하십시오. 코드는 다음과 같습니다:
If Request.Form<>"" 그러면
Request.Form의 각 Sql_Post에 대해
SQL_Data=0인 경우 Ubound(SQL_inj)로
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 그러면
Response.Write "<스크립트 언어=****>alert('World Movie Alliance SQL 범용 주입 방지 시스템 프롬프트 ↓nn 매개 변수에 잘못된 문자를 포함하지 말고 주입을 시도하세요!nnHTTP://www.521movie. com ');history.back(-1)</스크립트>"
응답.끝
종료하면
다음
다음
end
OK이면 완료된 것입니다. get 및 post 요청에 대한 정보 차단을 구현했습니다. conn.asp와 같은 데이터베이스 파일을 열기 전에 이 페이지를 참조하기만 하면 됩니다. 다시 SQL 인젝션 공격을 받을까 걱정하지 않고 프로그램을 계속 개발할 수 있습니다. 그렇지 않나요?