| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- vite
- job
- 웹개발기초
- 웹 보안
- DevOps
- 데이터베이스
- coding test
- react
- two pointers
- Doit알고리즘코딩테스트
- html
- 웹개발
- 서버 모니터링
- 모니터링
- sql
- Bambino
- CSS
- Java
- SpringFramework
- Spring MVC
- MSA
- 시큐어코딩
- spring boot
- MVC패턴
- servlet
- 자바
- BCIT
- jsp
- Grafana
- 웹개발자
- Today
- Total
목록Backend (59)
초보 개발자의 기록
SQL Injection은 공격자가 웹 애플리케이션의 취약점을 이용해 악의적인 SQL 쿼리를 삽입하거나 조작하는 공격 기법이다. 주로 애클리케이션 사용자 입력값을 적절히 검증하지 않거나, 쿼리를 문자열로 직접 구성할 때 발생한다. 이 공격을 통해 공격자는 민감한 정보를 탈취하거나, 데이터를 조작하고, 심한 경우 시스템 전체를 장악할 수 있다. SQL Injection의 위험성데이터 탈취: 사용자의 개인정보, 계정 정보 등 민감한 데이터를 조회할 수 있다.데이터 변조: 데이터를 삭제하거나 변경하는 등의 작업이 가능하다.권한 상승: 일부 데이터베이스는 특정 취약점을 통해 관리자(DBA) 권한까지 탈취할 수 있다.시스템 장악: 데이터베이스 명령 실행 -> 서버 파일 시스템 접근 -> 최종적으로 서버 전체를 장..
XSS(Cross-Stie Scripting)란?XSS(Cross-Site Scripting)는 웹 애플리케이션의 취약점을 악용해 악성 스크립트를 다른 사용자의 브라우저에서 실행시키는 공격 기법이다. 이를 통해 공격자는 사용자의 세션 탈취, 악성 코드 실행, 피싱, 웹사이트 변조 등 다양한 공격을 수행할 수 있다. 웹 페이지에 신뢰할 수 없는 입력이 그대로 반영될 때 주로 발생하며, 가장 흔한 웹 취약점 중 하나이다. XSS 공격 유형반사형 XSS (Reflected XSS)사용자의 이볅이 서버에서 즉시 반영되어 브라우저에서 실행될 때 발생하는 유형이다. 보통 URL 파라미터나 쿼리 스트링을 통해 악성 스크립트를 삽입한다.http://example.com/search?q=검색어를 그대로 페이지에 출력하는..
CSRF 란?CSRF(Cross-Site Request Forgery)는 웹 애플리케이션의 취약점을 이용해 사용자가 의도하지 않은 요청을 보내도록 하는 공격 기법이다. 공격자는 사용자가 인증된 상태를 악용하여, 사용자가 원하지 않는 행동을 수행하게 만들 수 있다.예를 들어, 사용자가 은행 사이트에 로그인한 상태에서 악성 웹사이트를 방문하면, 해당 사이트가 사용자의 권한을 이용해 은행 계좌에서 돈을 송금하도록 요청할 수 있다. CSRF 발생 상황1. 사용자 로그인: 사용자가 웹 애플리케이션에 로그인2. 세션 유지: 로그인 후 세션 쿠키가 브라우저에 저장3. 악성 웹사이트 방문: 공격자가 CSRF 코드를 포함한 사이트로 유도4. 악의적인 요청 전송: 사용자의 세션 쿠키를 이용해 원본 웹 애플리케이션으로 요청..
CORS 오류 (403, 405)의 진짜 원인과 해결 방법SPA + Spring Boot 환경에서 흔히 발생하는 CORS 문제SPA(React, Vue 등) 프런트엔드에서 API호출을 했는데 403(Forbidden), 405(Method Not Allowed) 오류가 발생하는 경험은 매우 흔하다. 방화벽에서 GET, POST, DELETE, PATCH를 모두 열어두었는데 왜 문제가 발생할까? 그 이유는 바로 CORS 기본 동작 방식과 Preflight 요청(OPTIONS) 때문이다. CORS란?CORS(Cross-Origin Resoure Sharing) 은 한 출처(origin)에서 실행되는 웹 애플리케이션이 다른 출처의 리소스에 접근할 수 있도록 브라우저가 제공하는 보안 기능이다. 동일 출처(Sam..
백엔드 개발에서 API를 만든다는 건 단순히 "요청을 받는다"로 끝나지 않음API를 어떻게 테스트하느냐가 서비스의 안정성과 품질을 좌우함 이번 글에서는 API 테스트의 기본 개념과 함께, 개발자들이 자주 사용하는 테스트 도구들, 그리고 Swagger의 역할에 대해 정리 API 테스트란?API (Application Programming Interface)는 서버와 클라이언트가 데이터를 주고받는 통로API 테스트는 이 통로가 정상적으로 작동하는지, 즉 요청(Request)을 보냈을 때 기대한 응답(Response)이 제대로 오는지를 확인하는 과정 예를 들어,- /users 로 GET요청을 보냈을 때 사용자 목록이 잘 오는지- POST 요청 시 Body에 담은 데이터가 실제로 저장되는지 - 인증 토큰이 없느..
DTO의 정의DTO(Data Transfer Object)는 데이터 전송을 위해 사용하는 객체를 의미데이터를 주고받기 위해 만든 작은 상자라고 생각하면 서버와 클라이언트 사이에서 데이터를 전송할때 사용주로 클라이언트와 서버 간 데이터 전송 또는 서버 내부 계층 간 데이터 이동에 사용DTO를 사용하면 Entity를 직접 노출하지 않고 안전하게 데이터를 전달할 수 있음예를 들어, 클라이언트가 메모 작성 데이터를 서버로 보내거나 서버가 메모 리스트를 반환할 때 DTO를 활용 DTO가 필요한 이유계층 분리데이터베이스 Entity를 직접 노출하면 계층 간 결합도가 높아지고, 유지보수가 어려워짐DTO를 사용하면 프론트엔드와 백엔드 사이에 데이터 전송 전용 객체를 만들 수 있음데이터 안전성 확보Entity 내부의 ..
웹 개발에서 가장 중요한 개념 중 하나는 클라이언트가 보낸 데이터를 서버에서 어떻게 받는가임Spring MVC에서 다양한 방식으로 요청 데이터를 다룰 수 있고, 이를 Java 객테로 바꿔주는 편리한 기능을 제공함대표적 방법: @ReuqestParam @ModelAttribute @RequestBody를 비교하고, 실제 상황에서 어떤 방식을 선택해야 하는지 정리 @RequestParam - 단일 값 처리@RequestParam은 쿼리 스트링이나 폼 데이터에서 단일 파라미터를 직접 받아옴@GetMapping("/form/param")@ResponseBodypublic String helloGetRequestParam(@RequestParam(required = false) String name, ..
웹 개발을 하다 보면 클라이언트(브라우저)에서 서버로 데이터를 전달해야 할 일이 자주 발생예를 들어 사용자의 이름과 나이를 입력받아 서버에서 처리하고 싶을 때, 데이터를 전달하는 방법은 여러 가지가 있음Spring에서는 대표적으로 Path Variable과 Request Param을 통해 데이터를 받을 수 있음 Path VariablePath Variable은 URL 경로 자체에 데이터를 포함시키는 방식예를 들어 사용자의 이름과 나이를 URL에 직접 넣어 요청할 수 있음GET http://localhost:8080/hello/request/star/Robbie/age/95위 요청에서 Robbie와 95는 서버로 전달되는 데이터. Spring에서는 @PathVariable 애너테이션을 사용하여 해당 값을..
백엔드 개발을 하다 보면 데이터를 주고받을 때 가장 많이 사용하는 형식이 바로 JSON그런데 Java 객체는 그대로는 JSON으로 변환할 수 없고, 또 JSON 문자열을 객체로 다시 바꾸는 과정도 필요이 과정을 도와주는 라이브러리가 바로 Jackson JacksonJackson은 Java 객체(Object) ↔ JSON 문자열 변환을 자동으로 처리해주는 라이브러리Spring 3.0 이후부터는 기본적으로 Spring 프레임워크에서 Jackson을 지원하기 때문에, 직접 변환 로직을 일일이 작성하지 않아도 됨Spring Boot의 spring-boot-starter-web 안에 이미 포함되어 있어서, 별도의 설정 없이 바로 사용할 수 있음즉, 우리가 @RestController에서 객체를 반환하면 Sprin..