반응형

파이썬 12

python(파이썬) 비밀번호 검사 정규식

패스워드 생성 시 설정 정규식에 맞춰 검사하는 코드 예시다. 2000년대 초반까지 비밀번호 저장하는 방식은 입력하면 그대로 DB에 반영되었다. 현재는 복잡도와 길이를 검증하여 승인 처리를 해야 한다. 회원가입 코드 예시 from flask import request, redirect from Models import User from Models import db import re @app.route('/register', methods=['POST']) def register(): userid = request.form.get('userid') password = request.form.get('password') confirm_password = request.form.get('confirm_pass..

IT 2022.09.26

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

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

IT/앱사용방법 2022.09.09

시큐어코딩) 파이썬 서버 중요자원 권한 설정공격 예방 방법

중요 자원에 대한 잘못된 권한 설정 공격 설명 응용프로그램이 중요한 보안 관련 자원에 대하여 읽기 또는 수정하기 권한을 허가할 경우, 권한을 갖지 않은 사용자가 해당 자원을 사용하게 된다. 여기서 권한이 있을 경우 Python의 os.fchmod, os.chmod 등의 함수를 사용하여 파일 생성 및 읽기 모드에서 권한을 설정할 수 있다. 서버 중요 자원 권한 설정 공격 안전 코딩 예 설정 파일, 실행파일, 라이브러리 등은 SW 관리자에 의해서만 읽고 쓰기가 가능하도록 설정하고, 설정 파일과 같이 중요한 자원을 사용하는 경우 허가받지 않은 사용자가 중요한 자원에 접근하지 못하게 검사한다. def write_file(): # 소유자 외에는 아무런 권한을 주지 않음 os.chmod('/root/system_c..

카테고리 없음 2022.09.04

파이썬 코딩 - 쿠키값 관리

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

IT/앱사용방법 2022.08.06

파이썬 회원가입 등 비밀번호 입력 시 점검하는 정규식

과거에는 비밀번호를 입력하면 그대로 값을 DB에 반영했었는데 현재는 복잡도와 길이를 검증하여 승인 처리를 해야 한다. 패턴은 아래와 같다. 2가지 이상(문자, 숫자, 특수문자) 8자리 이상 검사 PT1 = ('^(?=.*[A-Z])(?=.*[a-z])[A-Za-z\d!@#$%^&*]{8,}$') PT2 = ('^(?=.*[A-Z])(?=.*\d)[A-Za-z\d!@#$%^&*]{8,}$') PT3 = ('^(?=.*[A-Z])(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$') PT4 = ('^(?=.*[a-z])(?=.*\d)[A-Za-z\d!@#$%^&*]{8,}$') PT5 = ('^(?=.*[a-z])(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$') ..

IT/앱사용방법 2022.07.05

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

포맷 스트링 삽입 공격 설명 외부에서 입력한 값을 검증하지 않고, 입출력 함수의 포맷 문자열 그대로 사용하는 경우 발생. 파이썬에 있는 포맷 문자열 함수를 이용하여 취약 프로세스를 공격하여 권한 취득하여 임의로 코드를 실행하는 공격 기법 ​ 파이썬 포맷 스트링 삽입 공격 방식 {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

시큐어코딩) 파이썬 CSRF(크로스 사이트 요청 위조) 공격 예방코드 예시

크로스 사이트 요청 위조(CSRF) 이해 사용자가 인지하지 못한 상황에서 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격 공격 대상은 XSS와 다르게 서버를 대상으로 공격 시도 프레임별 옵션 설정하는 방법 Django에서 CSRF 옵션 세팅 MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', # MIDDLEWARE csrf . 목록에서 항목을 활성화 한다 'django.middleware.csrf.CsrfViewMiddleware', ...... ] settings.py에서 미들웨어 부분에 csrf 부분을 활성화해준다. 이후 스크립트에서 csrf 토큰을 명시해 준다. html에서 토큰 입력 부분 - form 태..

IT/앱사용방법 2022.06.15

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

피싱 공격이란? 일반적으로 사용자에서 전달한 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

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

파일 업로드 공격이란? 서버 측에서 실행될 수 있는 스크립트(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
반응형