반응형

정보보안 9

파이썬, 개발) 하드코딩 된 정보 안전하게 변환하기

하드코딩을 하는 이유 가끔씩 개발 테스트할 때 시스템이 연동되고 있는지 확인하거나 연동 후 결괏값이 잘 반영되었는지 확인하기 위해 하드코딩을 하는 경우가 있다. 또는 내부 시스템이 고정 코드값을 갖고 있어야 연결되는 경우 하드코딩을 하는 경우가 있다. 이런 이유로 하드코딩을 하고 있지만 노출될 때 피해는 무척 크다. 하드코딩 적용했을 때 보안 방안 DB서버 연동을 하기 위해서 어쩔 수 없이 IP와 같은 정보를 입력하는 경우에 대한 보안조치가 있다. 안전한 암호화 방식으로 변환 후 별도 분리 공간(파일)에 저장하고 복호화하는 방법이다. 파이썬 코딩 예시 import pymysql import json def query_execute(query, config_path): with open(config_pat..

IT/앱사용방법 2022.09.09

파이썬 코딩 - 쿠키값 관리

쿠키값 관리가 중요한 이유 대부분의 쿠키는 PC 메모리에 상주하며, 브라우저 실행이 종료되면 사라진다. 그러나 세션에 관계없이 지속적으로 저장되도록 설정할 수 있으며, 보통 C드라이브에 저장되어 사용된다. 개인정보, 인증 등 쿠키값에 영구 저장된다면 공격자는 쉽게 정보탈취 기회를 갖게 된다. 그래서 쿠키값 세팅을 해주는 방법과 개인이 관리하는게 중요하다. 보통 웹 개발 코드 예시 쿠키의 만료시간을 기본값으로 설정한다. 신경쓰지 않거나 테스트를 위해 길게 설정하고 잊고 넘어가는 경우가 있는데 그대로 사용자 하드디스크에 여러가지 정보가 저장되어 있는 쿠키를 공격자가 쉽게 도용될 수 있게 된다. from django.http import HttpResponse def remind_user_state(reque..

IT/앱사용방법 2022.08.06

시큐어코딩) 파이썬 포맷 스트링 삽입 공격 예방(예시 코드 포함)

포맷 스트링 삽입 공격 설명 외부에서 입력한 값을 검증하지 않고, 입출력 함수의 포맷 문자열 그대로 사용하는 경우 발생. 파이썬에 있는 포맷 문자열 함수를 이용하여 취약 프로세스를 공격하여 권한 취득하여 임의로 코드를 실행하는 공격 기법 ​ 파이썬 포맷 스트링 삽입 공격 방식 {main.__init__.__globals__[AUTHENTICATE_KEY]} 와 같은 문자열을 입력하여 내부 정보를 유출 유도 공격 예방 코드 예 AUTHENTICATE_KEY = 'Passw0rd' def make_user_message(request): user_info = get_user_info(request.POST.get('user_id', '')) # 사용자가 입력한 문자열을 포맷 문자열로 사용하지 않아 안전함 m..

IT/앱사용방법 2022.06.17

시큐어코딩) 파이썬 피싱공격 예방(기초 코드 예시포함)

피싱 공격이란? 일반적으로 사용자에서 전달한 URL 주소로 연결하기 때문에 안전하다 생각할 수 있지만 해당 폼의 요청을 변조하여 피싱사이트로 접속하게 만든다. 피싱공격 방법 1. 공격자가 웹서버에 URL 주소 변조 값을 전달한다. 2. 변조된 URL 반환 값(피싱사이트)로 연결된다. 3. 일반 사용자가 웹서버에 올라간 URL을 클릭할 때 피싱사이트로 연결된다. 피싱 공격 시큐어 코딩 예시 : 화이트리스트 만들어 관리 ALLOW_URL_LIST = [ '127.0.0.1', '192.168.0.1', 'https://login.service.com', ...... '/notice' ] def redirect_url(request): url_string = request.POST.get('url', '') ..

IT/앱사용방법 2022.06.14

한글 보안저장 문서 수정 못하게 하는 방법(pdf 저장 아님)

가끔씩 한글문서를 만들 때 보고서나 공문을 메일로 전달할 때 수정하지 못하게 만들어야 하는 경우가 있다. 보통은 pdf로 저장하는 방법을 사용하지만 한글 문서에서도 수정되지 않고, 출력 횟수도 제한해서 보안 기능을 높이는 방법이 있다. 이 방법은 주로 정부나 공공기관에서 발행하는 문서에서 적용되는 방법이다. 한글문서 수정 못하게 하는 방법은 정말 간단하다. 1. 보안 탭 클릭 2. 배포용 문서로 저장 클릭 3. 암호 입력(5자리 이상) 4. 저장할 제목과 위치 선택 5. 저장 위 방법은 neo버전 이상일 때 적용방법이다.​ 2002 버전 이상부터 보안문서를 불러올 수 있으니 업무 할 때 참고하면 좋겠다. 순서대로 따라 하기 어렵다면 아래 이미지 순으로 따라 해 보길 바란다. ​이렇게 하면 배포용 문서로 ..

IT/앱사용방법 2022.06.13

시큐어코딩) 파이썬 파일 업로드 공격 예방 하는 방법(기초)

파일 업로드 공격이란? 서버 측에서 실행될 수 있는 스크립트(asp, jsp, php, sh 등)파일 등 이 업로드 가능하면, 이 파일을 통해 공격자가 웹서버에서 직접 접근 기반을 마련하는 공격 기법이다. 파일 업로드 공격 방법 1. 공격자가 실행 가능한 파일을 서버에 업로드한다. 2. 파이썬에서 문자열 형식으로 표현된 형식을 인수로 받는다. 3. 인수를 반환하는 eval이나 인수로 받은 문자열을 실행하는 exec 함수를 같이 사용해 여러 변수들을 실행시킨다. 이는 웹 쉘 공격에 취약하게 만드는 방법이다. 파일 업로드 시큐어 코딩 예시 ​ # 업로드 하는 파일에 대한 개수, 크기, 확장자 제한하는 설정 FILE_COUNT_LIMIT = 5 # 업로드 하는 파일의 최대 사이즈 제한 (5MB - 5*1024..

IT/앱사용방법 2022.06.02

시큐어코딩) 파이썬 경로조작, 자원삽입 공격 예방하는 방법(기초 예시)

경로조작 및 자원삽입 공격 설명 외부 입력값을 통해 파일 및 서버 등 시스템 자원에 대한 접근 또는 식별을 허용할 경우, 입력 값 조작을 통해 시스템이 보호하는 자원에 임의로 접근할 수 있는 보안취약점. 공격자는 게시글 혹은 데이터의 수정, 삭제, 정보노출, 시스템 장애 등을 유발 할 수 있음. 즉, 공격자가 허용되지 않은 권한을 취득하여 설정에 관계된 파일을 변경하거나 실행시킬 수 있는 공격 경로조작 시큐어코딩 예시 필터링 적용 예(Django프레임워크) def get_info(request): # 외부 입력 값으로 받은 파일 이름은 검증하여 사용한다 request_file = request.POST.get('request_file') filename, file_ext = os.path.splitext..

IT/앱사용방법 2022.06.01

시큐어코딩) 파이썬 SQL 인젝션 공격 예방코드 기초

SQL 인젝션 알고 가기 공격자가 글 쓰는 폼이나 URL에서 입력에 SQL문을 삽입해 DB에 직접 정보를 열람하거나 데이터를 조작하는 공격 SQL 인젝션 공격 원리 웹과 DB가 서로 통신하는 부분에 공격자가 임의의 SQL문을 삽입함 예) 로그인할 때 파라미터 값을 where = '1' or '1'과 같은 모든 값이 참으로 바뀌게 하여 로그인 우회 파이썬에서 SQL 인젝션 예방 외부에서 들어오는 입력 값을 매개변수로 받아 저장하고 매개변수 값을 실행 함수에서 바인딩하여 변수로 호출함. 시큐어 코딩이 적용되지 않은 소스 with dbconn.cursor() as curs: # name, id값을 입력받음 name = request.POST.get('name', '') id = request.POST.get(..

IT/앱사용방법 2022.05.19

국가, 공공기관 정보화사업 제안요청서 작성 방법(보안항목 개념설명)

공공기관 정보화사업을 할 때 제안요청서를 작성하는 사람들이 많은 실수를 하는 점이 있다. 정보화사업을 하기 전 나라장터에서 전년도 제안요청서를 그대로 따오면서 많은 실수가 생긴다. 사업을 추진하면 기관에 맞는 보안정책이 있는데 상위기관 혹은 비슷한 사업이라 그냥 보안 항목을 작성하면서 용역사와 정보사업 담당자가 낭패를 보기 때문이다. 제안요청서에 보안항목을 명시할 때 크게 4가지 부분을 염두하고 작성해야 한다. 계약 전, 계약진행, 업무수행, 업무 종료 이렇게 4가지 부분이다. 정보화사업을 할 때 제안요청서를 나라장터에 기안하면 정보보안 범위, 업체가 갖고 있는 보안장비나 역량 등 판단할 수 있는 평가표가 필요하다. 나라장터에서 입찰이 진행되고 제안서를 보고 평가할 때 위 평가표가 사업을 할 때 많은 도..

IT 2022.05.03
반응형