[#35] KakaoOAuth 로그인
·
LG 유플러스 유레카 SW/Spring
시퀀스 카카오 개발자 센터https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com카카오 로그인 기능 활성화 방법1) 내 애플리케이션 > 제품 설정 > 카카오 로그인- 활성화 설정: ON- Redirect URI: http://localhost:8080/kakaoLoginCallback- 동의 항목: account_email (개인 개발자 비즈 앱 전환이 되어야 동의항목으로 설정할 수 있음)2) 내 애플리케이션 > 앱 설정 > 앱 키- REST API 키 복사 구현Frontend 설정적당한 image ico..
[#33] RESTful 방식 + Swagger 사용
·
LG 유플러스 유레카 SW/Spring
REST(Representational State Transfer)웹 시스템에서 리소스를 정의하고 그 리소스 간의 관계를 HTTP 메서드를 통해 정의하는 아키텍처 스타일RESTfulREST 아키텍처 원칙을 따르는 시스템 또는 서비스 RESTful 서비스는 REST의 규칙을 충실히 따르고, HTTP 메서드와 상태 코드를 적절히 활용하여 리소스를 조작REST APIREST 원칙을 따르는 API로, HTTP 프로토콜을 통해 리소스를 제공하고, 클라이언트가 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 데이터를 생성, 읽기, 수정, 삭제할 수 있도록 함RESTful APIREST 아키텍처 원칙을 잘 따르는 API 디자인 가이드 SwaggerRESTful API를 편리하게 문서화하고 테스트..
[#31] 토큰 인증 방식
·
LG 유플러스 유레카 SW/Spring
토큰 인증 방식➡️ 백엔드 서버로부터 받은 JSESSIONID를 저장했어도 다음 요청 시 쿠키를 가지고 가지 못하는 문제 해결 방법클라이언트가 로그인 요청을 보냄서버가 사용자 정보를 검증하고 토큰을 발급클라이언트는 토큰을 저장하고 요청 시 포함하여 전송서버는 토큰을 검증하여 사용자 인증 수행 쇼핑몰 실습 - 토큰 로그인 수행로그인 테이블 생성use ureca;drop table if exists login;CREATE TABLE `ureca`.`login` ( `email` VARCHAR(50) NOT NULL primary key, `token` VARCHAR(256) NOT NULL unique, `logintime` TIMESTAMP NOT NULL DEFAULT current_timestam..
[#30] XSS/Tabnabbing 공격
·
LG 유플러스 유레카 SW/Spring
XSS(Cross-Site Scripting)사용자가 입력한 데이터를 검증 없이 출력할 때 발생하는 보안 취약점 공격 방법공격자가 악성 스크립트를 삽입하여 사용자의 데이터를 탈취하거나, 악성 사이트로 리디렉션할 수 있음예시) 사용자가 조작된 URL을 클릭하면 악성 스크립트가 실행됨login XSS 방어 방법출력 시 데이터 이스케이프 처리(<, >, " 등으로 변환)입력값 검증 및 필터링( 태그, 이벤트 핸들러 차단)DOM 조작 시 innerHTML 대신 textContent, createElement() 사용 Tabnabbing사용자가 새 탭을 열어 링크를 클릭한 후, 원래 탭의 내용이 공격자에 의해 변경되는 보안 취약점 공격 방법사용자가 새로운 사이트를 방문한 사이, 원래 열려 있던..
[#29] 쇼핑몰 연동 실습 - SQL Injection + Connection Pool
·
LG 유플러스 유레카 SW/Spring
SQL Injection입력 데이터가 SQL의 구조를 바꾸는 취약점ex) email과 pwd 값을 다음과 같이 입력하는 경우, SQL 쿼리가 의도한 대로 실행되지 않고 공격자가 원하는 방식으로 쿼리가 실행String sql = "select * from member where email='" + m.getEmail() + "' and pwd='" + m.getPwd() + "'";공격 예시{ "email" : "' or ''='", "pwd" : "' or ''='"}실행되는 SQL 쿼리select * from member where email='' or ''='' and pwd='' or ''='' ➡️ 로그인 시스템에서 실제로 로그인 검증을 하지 않고 모든 사용자가 로그인되는 결과 !! ❌..
[#28] 쇼핑몰 연동 실습 - 다중 서버 세션 문제 해결 + 사용자 인증
·
LG 유플러스 유레카 SW/Spring
📍 다중 서버에서 세션 문제 해결하기 Frontend1️⃣ axios 설정axios는 데이터를 자동으로 json 타입으로 전송해줌index.html2️⃣ credential 설정index.jswindow.onload = async () => { axios.defaults.withCredentials = true; // Axios가 요청을 보낼 때, 쿠키 및 인증 정보를 포함하도록 설정하는 옵션 // .. 생략};3️⃣ login 요청을 axios로 변경// 로그인document.getElementById("loginBtn").addEventListener("click", async () => { const email = document.getElementById("loginEmail").val..
[#27] 쇼핑몰 연동 실습 - 회원가입/로그인
·
LG 유플러스 유레카 SW/Spring
✋🏻 중요 정보 먼저 관리하기 (feat.Backend)노출을 통한 해킹 위험 방지 1️⃣ src/main/resources/config/secu.propertiesDB_DRIVER=작성DB_URL=작성DB_USER=작성DB_PW=작성2️⃣ src/main/resources/application.propertiesspring.application.name=Project1_Cafespring.datasource.driver-class-name=${DB_DRIVER}spring.datasource.url=${DB_URL}spring.datasource.username=${DB_USER}spring.datasource.password=${DB_PW}3️⃣ com.shop.cafe.Project1CafeApp..