asp+access 에 대한 안전 문제 분석

알다 시 피 asp+access 의 가장 큰 안전 위험 은 access 데이터베이스 가 다른 사람 에 게    다운로드,현재 제공 되 는 많은 asp 공간 은 access 데이터베이스 만 지원 합 니 다.이렇게 되면,    asp+access 의 안전 문제 가 두 드 러 집 니 다.    1.Access 데이터베이스 의 저장 위험    ASP+Access 응용 시스템 에서 Access 데이터 베 이 스 를 얻 거나 알 아 맞 히 면    직경 과 데이터베이스 이름 은 이 데이터 베 이 스 를 로 컬 로 다운로드 할 수 있 습 니 다.    2.Access 데이터베이스 의 복호화 위험    Access 데이터베이스 의 암호 화 메커니즘 은 매우 간단 하기 때문에 데이터베이스 에 암 호 를 설정 하 더 라 도    복호화 도 쉽다.이 데이터베이스 시스템 은 사용자 가 입력 한 암호 와 고정 키 를 통 해 진행 합 니 다.    암호 화 된 문자열 을 만 들 고*.mdb 파일 에 저장 하여 주소'&H42'에서 엽 니 다.    시작 구역 내.이 또는 조작의 특징 은'두 번 의 이 를 거치 거나 원래 의 값 을 회복 하 는 것'이기 때문이다.    이 키 는*.mdb 파일 의 암호 화 문자열 과 두 번 째 로 다 르 거나 조작 하면 가 벼 워 집 니 다.    Access 데이터베이스 의 비밀 번 호 를 느슨하게 얻다.이런 원리 에 기초 하여 쉽게 복호화 할 수 있다.    절차    이 를 통 해 알 수 있 듯 이 데이터베이스 비밀 번 호 를 설정 하 든 안 하 든 데이터베이스 가 다운로드 되면 그 정 보 는 어떠한 안전성 도 말 할 수 없다.    3.프로그램 설계 중의 안전 위험    ASP 코드 는 폼(form)을 이용 하여 사용자 와 상호작용 하 는 기능 을 실현 하고 해당 하 는 내용 은 반 대 됩 니 다.    브 라 우 저의 주소 표시 줄 에 표시 되 며,적절 한 보안 조 치 를 취하 지 않 으 면 이 안에 기록 하기 만 하면 됩 니 다.    인증 을 돌아 서 한 페이지 로 바로 들 어 갈 수 있 습 니 다.예 를 들 어 브 라 우 저 에서'...'을 입력 합 니 다.    page.asp?x=1"은 폼 페이지 를 거치 지 않 고"x=1"조건 을 만족 시 키 는 페이지 로 바로 들 어 갈 수 있 습 니 다.    밀가루따라서 디자인 검증 이나 등록 페이지 를 디자인 할 때 이런 문 제 를 피하 기 위해 특별한 조 치 를 취해 야 한다.    의 발생.    ==========    해결 방안    ==========    데이터베이스 보안 향상    Access 데이터베이스 암호 화 메커니즘 이 너무 간단 하기 때문에 어떻게 효과적으로 Access 를 방지 합 니까?    데이터 베 이 스 를 다운로드 하면 ASP+Access 솔 루 션 의 안전성 을 향상 시 키 는 중요 한 것 이 됩 니 다.    1.비상 식적 명명 법    데이터베이스 가 발견 되 는 것 을 방지 하 는 간편 한 방법 은 Access 데이터베이스 파일 을 위해 복잡 한 매우    이름 을 정 하고 다 중 디 렉 터 리 에 저장 합 니 다.예 를 들 어 인터넷 서점 의 데이터베이스 파일 에 대해    간단하게"book.mdb"또는"store.mdb"라 고 명명 하지 말고 비상 식적 으로 지어 야 합 니 다.    이름    예 를 들 어./akjjj16t/kjhgb 661/acd/avccx 55 그런 심층 목록 에서이렇게    맞 히 는 방식 으로 Access 데이터베이스 파일 이름 을 얻 는 불법 접근 방법 이 효과 적 이 었 다.    저지 작용.    2.ODBC 데이터 원본 사용    ASP 프로 그래 밍 에 서 는 데이터베이스 이름 을 직접 쓰 지 말고 ODBC 데이터 원본 을 사용 해 야 합 니 다.    프로그램 에서,그렇지 않 으 면,데이터베이스 이름 은 ASP 소스 코드 의 비밀 이 새 어 나 와 함께 비밀 이 새 어 나 갈 것 입 니 다.예 를 들 면:    DBPath = Server.MapPath(“./akkjj16t/    kjhgb661/acd/avccx55/faq19jhsvzbal.mdb ”)    conn.Open “driver={Microsoft Access Driver (*.mdb)};dbq=” & DBPath    데이터베이스 이름 이 아무리 이상 하 게 지어 져 도 숨겨 진 디 렉 터 리 가 아무리 깊 어도 ASP 소스 코드 가 잘못 되 었 음 을 알 수 있 습 니 다.    이후 데이터베이스 도 쉽게 다운로드 된다.ODBC 데이터 원본 을 사용 하면 이러한 것 이 존재 하지 않 습 니 다.    라 는 질문 을 던 졌 다.    conn.open “ODBC-DSN 이름"    ASP 페이지 암호 화    ASP 소스 코드 유출 을 효과적으로 방지 하기 위해 ASP 페이지 를 암호 화 할 수 있 습 니 다.일반적으로 두 가지 방법 이 있다.    ASP 페이지 를 암호 화 합 니 다.하 나 는 구성 요소 기술 을 사용 하여 프로 그래 밍 논 리 를 DLL 에 밀봉 하 는 것 이다.    다른 하 나 는 마이크로소프트 스 크 립 트 를 사용 하 는 것 이다. Encoder 는 ASP 페이지 를 암호 화 합 니 다.단,사용 그룹    부품 기술 에 존재 하 는 주요 문 제 는 모든 코드 가 구성 요소 화 되 어야 하고 조작 이 비교적 번 거 롭 고 작업량 이 비교적 많다 는 것 이다.    크다스 크 립 트 사용 Encoder 는 ASP 페이지 를 암호 화하 여 조작 이 간단 하고 효과 가 좋 습 니 다.    Script 엔 코더 방법 은 많은 장점 을 가지 고 있다.    (1)HTML 은 아직도 편집 성 이 좋다.Script Encoder 는 HTML 페이지 에 만 암호 화 됩 니 다.    끼 워 넣 은 ASP 코드,다른 부분 은 변 하지 않 습 니 다.이것 은 우리 로 하여 금 여전히 사용 할 수 있 게 합 니 다.    FrontPage 나 Dreamweaver 등 자주 사용 하 는 웹 페이지 편집 도 구 는 HTML 부분 을 수정 하고 완성 합 니 다.    선,다만 ASP 암호 화 부분 을 수정 할 수 없습니다.그렇지 않 으 면 파일 이 효력 을 잃 게 됩 니 다.    (2)조작 이 간단 하 다.명령 행 인자 몇 개 만 파악 하면 됩 니 다.Script 엔 코더 실행    프로그램 은 scrinc.exe 입 니 다.사용 방법 은 다음 과 같 습 니 다.    screnc [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile    그 중의 매개 변 수 는 다음 과 같다.    s:화면 출력 차단;    f:출력 파일 이 같은 이름 의 입력 파일 을 덮어 쓸 지 지정 합 니 다.    xl:.asp 파일 의 맨 위 에@Language 명령 을 추가 할 지 여부;    l:defLanguag 에서 결 성 된 스 크 립 트 언어 를 지정 합 니 다.    e:defExtension 암호 화 된 파일 의 확장 자 를 지정 합 니 다.    ⑶.파일 을 대량으로 암호 화 할 수 있다.스 크 립 트 사용 엔 코더 는 현재 디 렉 터 리 의 모든 것 을    의 ASP 파일 을 암호 화하 고 암호 화 된 파일 을 해당 디 렉 터 리 에 통일 적 으로 출력 합 니 다.예.    예:    screnc *.asp c:\temp    ⑷. Script 엔 코더 는 무료 소프트웨어 다.이 암호 화 소프트웨어 는 마이크로소프트 사이트 에서 다운로드 할 수 있다.    http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe。다운로드 후 설 치 를 실행 하면 됩 니 다.    세 션 대상 을 이용 하여 등록 검증    등록 되 지 않 은 사용자 가 등록 인터페이스 를 돌아 응용 시스템 에 직접 들 어 가 는 것 을 방지 하기 위해 Session 대상 으로 등록 검증 을 할 수 있 습 니 다.세 션 대상 의 가장 큰 장점 은 한 사용자 의 정 보 를 보존 하여 후속 웹 페이지 를 읽 을 수 있 도록 하 는 것 이다.    3.데이터베이스 확장자 변경    데이터베이스 의 확장 자 를'asp'로 바 꿀 수도 있 습 니 다.물론 데이터 베 이 스 를 찾 을 때 도.    데이터베이스.asp 와 유사 한 파일 이름 을 사용 하면 데이터 베 이 스 를 쉽게 다운로드 할 수 없습니다.    정상적으로 읽 고 쓸 수 있 습 니 다.    4.데이터베이스 에 잘못된 asp 코드 추가    3 항 을 다 한 후에 만사 가 다 잘 될 것 이 라 고 생각한다 면 틀 렸 다.비록 데이터 뱅 크 의 확장 자 는...    .asp 가 되 었 지만,상대방 이 당신 의 데이터베이스 경 로 를 알 아 맞 힌 후에 도 다운로드 할 수 있 습 니 다.    그러나 좀 느 려 지면 상대방 은 페이지 가 완전히 열 린 후에'다른 이름 으로 저장'하면 된다.요해 하 다    이 문 제 를 해결 하려 면 데이터베이스 에 잘못된 asp 코드 를 추가 할 수 있 습 니 다.당신 은 먼저 숨겨 진 것 을 만 들 수 있 습 니 다.    표,표 안에 한 열 만 있 고 이 줄 을 삽입 합 니 다.    이렇게 되면 상대방 이 데이터베이스 페이지 를 열 때 asp 스 크 립 트 의 오류 정보 만 나타 납 니 다.    데이터 베 이 스 를 다운로드 하 겠 습 니 다.    5.프로그램 설계 의 위험 에 대한 해결 사례    대부분의 사람들 은 사이트 가 로그 인 비밀 번 호 를 추가 하면 정상적으로 들 어 갈 수 없다 고 생각한다.한번 보 세 요.    면 검증 문:    sql="select uname,pwd from uinfo where "    sql=sql&"uname='"&request.form("uname")&"'"    sql=sql&" and pwd='"&request.form("pwd")&"'"    rs.open sql,conn,1,1    if rs.eof or rs.bof then    response.write "죄송합니다.잘못된 사용자 이름/비밀번호!"    else    response.write "로그 인 성공!"    end if    아마도 이미 독자 들 이 이 코드 가 매우 위험 하 다 는 것 을 알 아 차 렸 을 것 이다.상대방 이 사용자 이름 만 알 면    로그 인 할 수 있 습 니 다.비밀번호 상자 에""를 입력 할 수 있 습 니 다." or '1'='1'이면 됩 니 다.그 원 리 는 매우 큽 니 다.    간단 합 니 다.sql 조회 문 구 를 이용 하 였 습 니 다.이 방법 으로 제출 한 sql 문 구 를 주의 하 십시오.    다음 이 되 었 습 니 다:(사용자 이름 이 administrator 라면)    select uname,pwd from uinfo where uname='administrator' and pwd='' or '1'='1'    사용자 이름 administrator 가 존재 한다 면 이 기록 은 선택 할 수 있 습 니 다.    당연히 정상적으로 로그 인 할 수 있 죠.    해결 방안:    sql="select uname,pwd from uinfo where "    sql=sql&"uname='"&request.form("uname")&"'"    rs.open sql,conn,1,1    if rs.eof or rs.bof then    response.write "죄송합니다.이 사이트 에는 이 사용자 가 없습니다!"    else    if rs.fields("pwd")=trim(request.form("pwd")) then    response.write "로그 인 성공!"    else    response.write "잘못된 사용자 이름/비밀번호!"    end if    end if

좋은 웹페이지 즐겨찾기