Server Side/ASP

인젝션방지 팁 및 배열 스플릿 팁

Dev. Tool 2017. 2. 20. 20:02
이런 방법도 있다는 차원에서..

1. 아래 코드를 공통include파일에 추가

array_split_item_q = Array("--
", ";", "/*", "*/", "@@", "char ", "nchar", "varchar", "nvarchar", "alter", "begin", "cast", "create", "cursor", "de
clare", "delete", "drop", "exec ", "execute", "fetch", "insert", "kill", "open", "select", "sys ", "sysobject", "sysc
olumns", "table", "update", "", "")
For Each item_temp In Request.QueryString
   For array_counter = LBound(array_split_item_q) To UBound(array_split_item_q)
      item_position1 = InStr(LCase(Request(item_temp)), array_split_item_q
(array_counter))

 

      If item_position1 > 0 Then
         Response.Write "Command cannot be executed.

입력금지 문자열 
[" & array_split_item_q(array_counter) & "]를 사용하셨습니다."
         Response.End
      End If
   Next
Next

2. 전체소스 수정일땐
에디트플러스에서.. 
'--------------------------------------------------------------------------------

 

'ex) Requst 항목을 SpecialWordCheck(Request("")) 으로 변환할 경우

 

'---------------------------------------------------------------------------------

 

Request[(]["]*[a-z_]*["]*[)] - 찾을말

 

SpecialWordCheck() -바꿀말

 

SpecialWordCheck라는 놈은 ASP 에서 SQL 인잭션을 막기 위한 함수
기존에 작업했던 내용이 이 내용을 무시하고 처리 하였기 때문에 이걸로 감싸주는 형태로 보안등급을 높임 
Request.ServerVariables 는 제외하고 무조건 Request("") 이런 형태만..

 

ex) request("idx")  -> SpecialWordCheck(request("idx")) ...




참고 URL -
http://cncmusic.tistory.com/category/%5B%EC%97%85%EB%AC%B4%5Dasp