2008년 11월 7일 금요일

ASP.NET, Sql Injection 필터 예제 코드

http://forums.asp.net/t/1254125.aspx 포스트를 참고해 보면 좋을것 같음.

닷넷 프레임워크 2.0 이상에서는, HttpModule 을 등록하여 사용하는 방법에 대한 것이고, 닷넷 1.1 기반에서는 응용프로그램 시작 지점에 체크 루틴을 넣는 방법 입니다.

public static string[] blackList =
 {"--",";--",";","/*","*/","@@","@",
    "char","nchar","varchar","nvarchar",
    "alter","begin","cast","create","cursor","declare","delete","drop",
    "end","exec","execute",
    "fetch","insert","kill","open",
    "select", "sys","sysobjects","syscolumns",
    "table","update"};

Sql Injection 이 가능한 문자열을 배열로 지정을 해놓고, 웹서버에 요청되는 내용을 위 내용으로 필터링을 하는 것입니다.

특히 요즘에는,. 쿼리문을 바이너리 문자열로 인코딩하여 실제 SQL Server 에서는 실행시 정상적인 쿼리문으로 실행되도록 Cast 형변환,. 즉 Declare 와 Cast 를 많이 쓰는것 같습니다.

사이트의 개별 코드와는 상관없이 사이트 전역에 영향을 주는 방법이긴 합니다만, Form 값으로 들어오는 부분도 필터링을 하므로,. 보통 게시판을 글 내용에 있는 것도 필터가 될수도 있겠네요.

요즘,. Sql Injection 이 극성인데,..
조금이나마 도움이 될수도 있을것 같습니다.^^

댓글 없음:

댓글 쓰기

HttpClient 에서 비동기 호출시 System.Threading.Tasks.Task 오류

client.PostAsync().Result; 하나 이상의 오류가 발생했습니다., 위치: System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) 이 요청을...