본문 바로가기
카테고리 없음

홈페이지 개인정보 노출 점검

by 솥에 2023. 3. 2.
반응형

개인정보 노출 점검을 수동으로 진행하고 있어 보안 업무 효율화했던 내용을 공유해 보려고 합니다.

대상 URL 목록은 200개이상

노출 점검시간은 2시간

반자동화하여 2시간의 점검 시간을 1분으로 줄였습니다.

 

1. 배경

 - 주민번호, 휴대폰 번호, 계좌번호 등 개인정보를 포함한 웹페이지가 검색엔진에 수집될 경우 사이트에서 해당 웹 페이지의 개인정보를 삭제 조치하더라도, 크롤러가 개인 정보가 삭제 조치된 웹 페이지를 재 수집하지 않는 동안 개인정보가 여전히 검색 엔진에 검색될 수 있다. 홈페이지에 개인정보가 잠시다로 업로드된 경우에는 반드시 해당 노출 내용이 검색엔진의 의해 수집되었는 지를 확인하고 검색엔진에 남아 있는 개인정보를 삭제 조치 되어야 한다.

 

2. 점검 프로세스

 - 사용하는 사이트 URL 목록을 선정하여 주기적으로 개인정보가 검색엔진에 노출되는 지 확인하고 노출되었을 경우 담당자에게 알람(문자/이메일)을 통해 사실을 인지하고, 검색 엔진 사이트에 삭제 요청을 한다.

 

초기 버전

대상 URL 목록 선정 -> 개인정보 검색엔진 노출 확인(구글) -> 확인 결과 -> txt 파일 저장

 - 대상이 되는 URL 목록을 sites.txt 파일에 입력하고 점검 python 스크립트를 실행하여 노출 확인

 

2차 버전

대상 URL 목록 선정 -> 개인정보 검색엔진 노출 확인(구글, 빙, 네이버등) -> 확인 결과 및 이력

 - 주기적으로 개인정보노출 점검하고 이력을 관리할 수 있음

 - 웹 점검 시스템으로 만들어 점검 URL목록을 웹페이지에 입력 및 점검 스케쥴링을 이력

 

최종 버전

대상 URL 목록 선정 -> 개인정보 검색엔진 노출 확인(구글, 빙, 네이버등) -> 확인 결과 및 이력 -> 알람 -> 검색 엔진 삭제 요청

 - 2차버전에서 대상 검색엔진을 다양하게 지원하도록 하며, 노출되었을 경우 알람(이메일,문자등)

 - 노출된 사이트엔진에 삭제 요청할 수 있도록 export 기능 제공

 

3. 효과

 - 기업 및 정보 노출 피해 예방

 - 중요 기업 정보 보호 및 경쟁력 보호

 - 개인정보보호 관련 법규 준수

 - 기관의 안전하며 활발한 경영환경 구축

 

4. 점검 모듈 개발

 1) 구글 조건 검색

   - 특정 사이트 내 검색

      site:domain

      ex) site:naver.com

 

 

   - 포함된 단어 검색

      site:domain intext:한단어 or alltext: 휴대폰 주소

      ex) site:naver.com intext: 휴대폰

      ex) site:naver.com intext: 휴대폰 주소

 

 

   - 특정 확장자 검색

      site:domain filetype: txt or xml 등

      ex) site:naver.com filetype: xml

 

2) 구글 조건 검색으로 대상 목록 생성

      site:"doamin" intext:핸드폰번호

      site:"doamin" inurl:/admin

      site:"domain" typefile:pdf

      site:"domain" typefile:txt

 

3) google custom search api

  - custom search api 환경 세팅

     http://egloos.zum.com/dir2000/v/7515674

 

Google custom search API for Python

CLI 에서 Google Custom Search API를 써보고 있습니다... 소개 차원에서 조금 올려보죠. 1. 구글 계정이 있다면 구글 콘솔로 로그인 합니다: https://console.developers.google.com2. 프로젝트 하나 만들고: 3. query에

egloos.zum.com

   - 사용모듈 설치

      pip install google-api-python-client

 

4) 소스 파일

 - site.txt 파일 읽어 온다.

 - 개인정보 검색엔진 노출 조회(구글) 한다.

 - 조회 결과값이 1개 이상인 경우 사이트 목록을 출력한다.

#-*- coding: utf-8 -*-
from googleapiclient.discovery import build

google_api_key = ""
google_cse_id = ""

service = build("customsearch", "v1", developerKey=google_api_key)

with open("./sites.txt", "r", encoding='UTF8') as file:
    sites = file.read().splitlines()

 

def go_search(sites):
    for i in range(len(sites)):
        results = service.cse().list(q=sites[i], cx=google_cse_id, num=1).execute()
        total_results = int(results['searchInformation']['totalResults'])
        if total_results > 0:
            print(sites[i])
        else:
            pass

if __name__ == '__main__':
    go_search(sites)

 

 

5. 참고 문서

 - [국감] 개인정보노출, 3년 새 40% 급증...허은아 "인증보급·관리교육 필요"

 - 홈페이지 개인정보 노출방지 안내서

   개인정보보호 포털 - https://www.privacy.go.kr

 

 

반응형