분류 전체보기

Auth | Security

XSS 공격이란?

XSS 공격은 크로스 사이트 스크립팅(Cross Site Scripting)을 뜻하며, 브라우저에서 특정 스크립트가 실행되도록 하는 공격 방식입니다. 공격자는 XSS 공격을 통해 사용자의 세션을 가로채거나, 웹사이트를 변조하고, 피싱을 시도할 수 있습니다. XSS, 크로스 사이트 스크립팅이란? 크로스 사이트 스크립팅은 웹 애플리케이션에서 발생하는 가장 일반적인 10가지 공격 중 하나에 해당하며, 웹사이트에 악성 스크립트를 심어 이를 열람한 피해자를 공격하는 방법입니다. 해커는 쿠키의 정보를 사용해 세션을 가로채거나, 웹사이트를 변조하고 피싱 공격을 시도할 수 있습니다. 또한, 사용자가 키보드를 통해 입력하는 정보를 가로채는 키 로거(Key Logger), 마우스 위치를 추적하는 마우스 스니퍼(Mouse ..

Auth | Security

SSO 싱글사인온이란?

SSO(Single Sign-On)은 하나의 로그인 인증 정보를 통해 다른 애플리케이션에 접근할 수 있는 사용자 인증 서비스입니다. SSO를 사용하면 특정 플랫폼 하나에서 로그인 인증 후에는 매번 로그인과 로그아웃을 하지 않아도 됩니다. 한글로는 싱글사인온이라 합니다. SSO 구현의 핵심은 사용자의 인증 정보를 다른 애플리케이션으로 넘겨주는 것입니다. SSO가 제대로 구현되면 사용자는 여러 계정의 아이디와 비밀번호를 기억하지 않아도 되며, 관리자 또한 별도의 인증 시스템 구축 없이 하나의 보안 토큰으로 플랫폼과 앱 등을 관리할 수 있습니다. 참고 자료: https://gruuuuu.github.io/security/ssofriends/

Web | Internet

쿠키, 세션, 캐시의 차이점 정리

우리는 인터넷과 웹 브라우저를 사용하며 쿠키, 세션, 캐시를 사용합니다. 예를 들어, 웹사이트 로그인 유지와 같이 편리한 기능은 쿠키와 세션의 조합으로 이뤄집니다. 쿠키를 모두 지우고 새로고침하면 로그인이 풀리는 이유도 이 때문입니다. 이번 글에서는 쿠키와 세션, 캐시에 대해서 정리해보도록 하겠습니다. HTTP 요청의 이해 HTTP는 스테이트리스(statelss) 속성을 갖습니다. 이는 이전의 요청과 다음의 요청이 연결되지 않는다는 것입니다. 따라서 특정 요청과 다른 요청을 연결하려면 각 요청들 사이에서 해당 정보를 안전하게 담아 전달할 수 있는 방법이 필요합니다. 여기에 사용되는 개념이 바로 쿠키와 세션입니다. 쿠키란? 쿠키는 사용자의 브라우저에 저장되는 정보로 웹사이트에서 진행되는 사용자의 활동을 기..

Deployment

CI/CD의 개념과 차이점

CI/CD의 개념 CI/CD는 애플리케이션 개발 단계를 자동화해 보다 짧은 주기로 통합 및 배포하는 것을 의미합니다. 인터그레이션 헬(Integration Hell)을 해결하기 위한 솔루션으로 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포가 핵심입니다. CI/CD를 통해 통합 및 테스트, 제공 및 배포에 이르는 애플리케이션 라이프사이클 전체에 걸친 자동화와 모니터링을 진행할 수 있습니다. CI와 CD의 차이점 CI: Continuous Integration - 지속적인 통합 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 리포지토리에 통합되는 것을 의미합니다. 결과적으로 여러 개발자가 동시에 작업하며 발생할 수 있는 충돌 문제를 수시로 확인하고 해결할 수 있습니다. 핵심은 버그를 ..

Python

파이썬 정규 표현식 치트 시트

파이썬 정규 표현식을 작성할 때 사용되는 문법이 정리되어 있습니다. 더 많은 정규 표현식 및 테스트는 RegExr 웹사이트에서 확인하실 수 있습니다. 이메일, 비밀번호, URL 유효성 정규 표현식 예시는 다음 블로그 글에서도 확인하실 수 있습니다. 정규 표현식 치트 시트(Reg Express Cheat Sheet) 1. Character classes . any character except newline \w\d\s word, digit, whitespace \W\D\S not word, digit, whitespace [abc] any of a, b, or c [^abc] not a, b, or c [a-g] character between a & g Anchors ^abc$ start / end o..

Project

#2 한 달 살기 숙박 웹사이트: 마이제주스테이

프로젝트 개괄 한줄 요약: 제주도 한 달 살기를 모티브로 한 숙박 예약 웹사이트 팀 구성: 프론트엔드 4명, 백엔드 2명 프론트엔드 깃허브, 백엔드 깃허브 활용 스택 프론트엔드 HTML/CSS JavaScript(ES6+) React SASS 백엔드 Python Django MySQL AWS 프로젝트 소개 제주도 한 달 살기를 목표로 한 숙박 예약 웹사이트를 구축하고자 했습니다. 2주간 프론트엔드 4명, 백엔드 2명이 한 팀이 되어 2번의 스프린트 기간을 잡고 프로젝트를 진행했습니다. 저는 숙소 검색, 필터링, 정렬 등과 더불어 예약 조회 및 처리, 고객 리뷰 파트를 담당했습니다. 프로젝트 시연 영상 프로젝트 회고 2차 프로젝트 때는 1차 프로젝트에서 회고 했던 것을 최대한 반영하고자 했습니다. 무엇보다..

Django

장고 get_or_create()와 race condition 문제

get_or_create 메소드 설명 장고의 get_or_create 함수는 특정 kwargs로 데이터베이스 객체를 탐색하고 이를 불러오거나 존재하지 않는 경우 새롭게 생성하는 간편한 메소드입니다. 메소드 실행 결과 (object, created) 튜플이 반환됩니다. object는 불러온 객체이거나 생성된 객체이며, created는 불리언 값입니다. 이는 중복된 객체가 생성되는 것을 방지하고, 다음과 같은 로직을 한번에 처리할 수 있는 메소드입니다. try: obj = Person.objects.get(first_name='John', last_name='Lennon') except Person.DoesNotExist: obj = Person(first_name='John', last_name='Lenn..

Database

MySQL 셸 커맨드 정리

MySQL 데이터베이스 쿼리에 자주 사용되는 셸 커맨드를 정리합니다. 테이블 및 컬럼 조회 특정 테이블을 컬럼을 기준으로 정렬하여 N개만 보기 SELECT * FROM "TABLE NAME" ORDER BY "COLUMN NAME" LIMIT 1 특정 테이블의 컬럼을 뽑아 특정 컬럼을 기준으로 정렬하여 N개만 보기 SELECT "COLUMN NAME 1", "COLUMN NAME 2", ... FROM "TABLE NAME" ORDER BY "COLUMN NAME" LIMIT 1 조회 결과 수직으로 보기(기존에는 가로로 출력되던 결과가 세로로 출력됨) SELECT * FROM "TABLE NAME" \G

Auth | Security

SSH 개념과 사용 방법: 퍼블릭 키와 프라이빗 키 설명

SSH의 개념 SSH(Secure Shell)은 원격 호스트 컴퓨터에 접근하기 위해 사용하는 인터넷 프로토콜입니다. 1995년 기존의 로컬 셸에 암호화 기능을 추가되어 출시되었습니다. SSH를 사용하면 통신이 노출되어도 암호화된 문자로 보여지게 됩니다. SSH 키의 종류 SSH 키는 퍼블릭 키(Public Key)와 프라이빗 키(Private Key)로 구성됩니다. 이러한 키들은 어디에 쓸까요? 바로, 서버에 접속할 때 비밀번호 대신 일치 여부를 확인하는 데 사용합니다. 퍼블릭 키는 한글로 하면 공개 키이고 프라이빗 키는 비공개 키입니다. 보통 공개 키는 리모트 컴퓨터에 올려두고, 비공개 키는 로컬 컴퓨터에 보관합니다. 클라이언트가 서버에 SSH 접속을 시도하면 공개 키와 비공개 키의 일치 여부 확인 절..

TIL

소프트웨어 테스팅 전략 - TIL 11

소프트웨어 테스팅은 작성한 코드에서 예상한 결과가 나오는 지를 테스팅하는 것입니다. 테스팅 실패 시 구조 또는 코드를 수정해야할 수 있습니다. 테스팅을 하는 이유는 소프트웨어의 결함을 확인하고, 발생할 수 있는 문제를 사전에 방지하기 위함입니다. 이를 통해 소프트웨어 구조와 품질을 개선할 수 있습니다. 메뉴얼 테스팅과 자동 테스팅 소프트웨어 테스팅은 메뉴얼 또는 자동으로 진행할 수 있습니다. 메뉴얼 테스팅은 직접 케이스를 설정하여 테스팅을 진행하는 것입니다. 반면, 자동 테스팅은 컴퓨터로 자동화된 테스팅을 진행합니다. 메뉴얼 테스팅은 자동 테스팅에 비해 불안정하고 인력과 비용이 더 많이 소모되고 확장성이 낮은 반면, 자동 테스팅은 상대적으로 안정성이 높고 인력과 비용을 절감할 수 있으며 확장성이 높습니다..

휘 Hwi
'분류 전체보기' 카테고리의 글 목록 (2 Page)