본문 바로가기
728x90

전체 글231

[React] router direct url or refresh 404 Not Found 에러 발생 해결 클릭하면 Route 에서 설정한 path 대로 사이트 이동이 정상적으로 되는데, 직접 url 을 입력하거나 새로고침하는 경우엔 404 에러가 났다.  [클릭시 정상적으로 이동]  [해당 url 직접 입력 또는 새로고침시 에러 발생]  프론트 개발 시 수정사항이 있을 때마다 `npm build` 하고, output 파일이 생성되면 index.html 을 띄우는 방식으로 확인해야 한다면, 우리는 서비스를 완성하기도 전에 지쳐 쓰러질 것이다. 이를 해결하기 위한 방법으로는 `webpack-dev-server` 라이브러리를 사용하면 되는데, 해당 라이브러리를 사용하면 개발 서버를 띄우고 즉각적인 수정사항이 반영되도록 할 수 있다.하지만 라우팅이 되지 않는 문제가 발생한다...^_^ 보통 개발 서버에서는 요청된 .. 2025. 2. 17.
[네트워크] HTTP와 HTTPS HTTP와 HTTPS의 차이점은 무엇인가?대표적인 기술면접 질문 중 하나로 간략하게 대답하자면,  HTTP는 웹 브라우저와 서버 간에 데이터를 주고 받는 프로토콜로 데이터를 암호화하지 않고, HTTPS는 HTTP에 SSL/TLS를 추가하여 데이터 전송을 암호화하고 데이터의 기밀성과 무결성을 보장한다. 특징HTTPHTTPS보안암호화 없음 (평문 전송)암호화 적용 (SSL/TLS)신뢰성낮음높음 (인증서 필요)속도빠름초기 연결을 느리지만 최적화 가능포트80443사용 사례일반적인 웹 사이트, 테스트 환경금융, 쇼핑몰, 로그인 시스템 등 보안이 중요한 서비스  "POST 요청하면 안전한거 아니에요?"GET 요청은 데이터를 쿼리 스트링(Query String)으로 전달하기 때문에, 브라우저 주소창이나 로그에 남을 .. 2025. 2. 8.
[MySQL] 트랜잭션 격리 수준 트랜잭션에 관해서는 아래 포스트에서 정리했다. 더 나아가서 트랜잭션의 격리 수준에 대해서 정리해보자.- https://yonikim.tistory.com/154   트랜잭션의 격리 수준이란 여러 트랜잭션이 동시에 실행될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 여부를 결정하는 것이다. 낮은 격리 수준은 동시 처리 능력을 높이지만, 데이터의 일관성 문제를 발생시킬 수 있다. 반대로 높은 격리 수준은 데이터의 일관성을 보장하지만, 동시 처리 능력이 떨어질 수 있다.즉, 데이터 정합성과 성능은 반비례한다.   트랜잭션 격리 수준의 종류와 특징 1. READ UNCOMMITTED 커밋이 되지 않은 트랜잭션의 데이터 변경 내용을 다른 트랜잭션이 조회하는 것을 허용한.. 2025. 1. 19.
[시스템디자인] 세션과 JWT의 차이 세션 기반 인증 세션 기반 인증은 서버 측에서 사용자의 세션 정보를 저장하고, 클라이언트에게는 해당 세션을 식별할 수 있는 고유한 세션 ID를 제공하는 방식이다.  세션 기반 인증의 작동 방식 사용자가 로그인하면 프론트엔드가 인증 정보를 백엔드 서버로 전송한다. 백엔드는 비밀 키를 사용해 세션을 생성하고 세션 데이터를 데이터베이스나 세션 저장소에 저장한다. 서버는 고유한 세션 ID가 포함된 쿠키를 사용자의 브라우저로 전송한다. 이후의 요청에서 브라우저는 헤더에 세션 ID를 포함시켜 전송한다.서버는 세션 ID를 검증하고 접근을 허용한다.  세션 기반 인증의 장점세션 관리가 용이하다: 세션 저장소에서 간단히 세션을 제거하여 로그아웃 처리가 가능하다.중앙 집중식 세션 관리로 사용자 활동 추적과 제어가 편리하다.. 2025. 1. 14.
[Database] SQL Injection SQL Injection이란?데이터베이스와 연동된 웹 애플리케이션에서 공격자가 입력 폼 또는 URL 입력란에 SQL 구문을 삽입하여 DB 를 조작할 수 있는 취약점을 의미한다. 주로 사용자가 입력한 데이터를 제대로 filtering, escaping하지 못했을 경우에 발생한다. 공격 종류 및 방법1. Classic SQL Injection 사용자 입력값을 그대로 SQL 쿼리에 삽입하여 악의적인 SQL 쿼리를 실행하는 기본적인 공격 방법이다.  로그인 공격 예시로그인 페이지가 있고, 로그인을 할 때 USER_ID 와 USER_PASSWORD 를 입력받아 로그인이 진행된다고 했을 때,  기본 쿼리문 SELECT user FROM Users WHERE user_id = 'USER_ID' AND user_pa.. 2025. 1. 9.
[Git] Markdown Badge 만들기 README.md 를 쓰다 보면, 자신이 사용하는 Skill 을 예쁘게 쓰고 싶을 때가 있다.  1. Simple Icons 에서 원하는 아이콘을 검색한다. 2. Shields.io에서 제공하는 url 을 사용한다.https://img.shields.io/badge/${뱃지명}-${css컬러}?logo=${Simple  Icons 에서 검색한 로고명}&logoColor=${로고 컬러} ex) https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=whiteSimple Icon 에 로고가 없을 수도 있다. (Java 는 왜 없는건지 의문)3. README.md 에 삽입해주면 된다.  한땀한땀 찾아서 만들어주기 귀찮다면, 아래 Rep.. 2025. 1. 2.
728x90
반응형