카테고리 없음

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

솥에 2023. 3. 2. 18:52
반응형

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

대상 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

 

 

반응형