# httponly
Today's Answer 02-2
2. 웹 브라우저 스크립트 작성시 일어날 수 있는 보안 이슈에 대해서도 꼬리질문이 있었는데 XSS(Cross-site scripting) 공격과 관련된 것이었다. 그 중 XSS Cheat Sheet, HttpOnly 키워드를 얻었는데 이것과 PHP의 상관관계가 있을까? 웹 개발시 PHP는 필수적일까? 어떤 용도로 사용될까? XSS(Cross-Site Script) >사용자가 요청한 페이지에 강제로 악성 스크립트를 삽입해서 브라우저에서 악의적인 동작이 실행되도록 하는 공격기법. 어플리케이션에서 브라우저로 데이터를 전송하는 페이지에서 사용자가 입력한 데이터를 검증하지 않거나, 데이터 출력시 데이터를 필터링하지 않을 때 발생한다. 일반적으로 Javascript에서 발생하지만 동적 데이터를 생성하는 모든 언어에서 발생할 가능성이 있다. (PHP도 그러하여 꼬리질문에 나온듯하다.) 약자를
쿠키와 관련된 지식
쿠키는 브라우저에 저장되는 임시 값이다. expiration date가 명시적으로 정해질수 있고, 세션유지 기간동안만 작동하기도 한다. Javascript에서 직접적으로 값을 가져오는게 가능하기 때문에 보안상 취약하다는 단점이 있다. 그래서 생긴게 쿠키에 HttpOnly 속성이나 secure 속성을 주는것이다. 이러면 쿠키 조작을 할 수 없고 가져오기도 불가능하다. 실제로 이러한 특징을 모르고 프로젝트에서 JSESSIONID 쿠키값을 가져오려고 시도했는데 계속 실패해서 원인을 찾아보니 HttpOnly 속성때문임을 알게 되었다.

React에서 Next.js로 Migration(EP2: 과연 이게 올바른 선택일까? feat. Auth)
이번 EP2은 Next.js에서 어떻게 Auth를 처리했는지에 관한 이야기입니다. Auth 분석 Next.js를 기반으로하는 새로운 프로젝트 V2가 시작되고 제가 진행한 일은 Auth였습니다. 당장 유저정보를 불러와 GNB에 그리고 싶었거든요. > 내 유저 정보를 어떻게 알죠? 내가 누군지 정보를 담아서 Call하면 되죠! 그러면 정보를 어떻게 담죠? Bearer Authentication 프로덕트는 Bearer Authentication방식으로 개발되었습니다. 인증에 필요한 token은 로그인시에 쿠키로 발급받습니다. Login page는 V1에서 유지했는데요. 도메인이 같기 때문에 발급받은 token이 담긴 Cookie를 어떻게 다룰 것인가가 가장 중요한 문제였습니다. 왜냐하면 Cookie는 httpOnly 거든요. > 참고로 서브도메인에 대한 보안상의 이유로 credential로 처리하지 않았습니다. HttpOnly🍪 다들

Swagger API 적용
Swagger API Rest API를 자동으로 문서화해주는 API입니다. 프론트엔드와의 협업을 위해서 적용하고자 합니다. > 23년 2월 10일 현재 최신 버전인 Springdoc 1.6.14버전을 설치하였습니다. Swagger 3버전을 이용할 예정입니다. https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-ui/1.6.14 적용 먼저 build.gradle에 Swagger-UI 관련 Dependencies를 추가합니다. ✅ build.gradle Swagger관련 설정을 위해 Configuration 클래스도 생성합니다. ✅ SwaggerConfig 여기서 OpenAPI를 생성할 때 title, description, version을 바꾸면 아래 나올 페이지의 내용도 바뀌게 됩니다. Swagger-UI는 `h

토큰 저장위치
토큰을 어디에 저장해야 안전할까? 브라우저에서 JWT를 저장할 수 있는 곳은 로컬스토리지, 쿠키 두군데가 있다. 하지만 로컬스토리지나 쿠키나 모두 자바스크립트로 읽을 수 있는 값들이기 때문에 아무런 처리없이 이곳에 저장하면 굉장히 보안에 취약하다. 해커가 이미지 태그 혹은 브라우저 URL에 자바스크립트를 삽입 할 수 있는 취약점이 있다면 이렇게 로컬스토리지나 쿠키에 저장된 토큰은 바로 허술하게 털려버린다. 브라우저의 로컬스토리지는 정말 편리하지만 XSS를 방어할 수 있는 방법이 없기 때문에 로컬스토리지보다는 쿠키가 그나마 더 보안에 낫다. 단, 이 쿠키카 Http Only이며 Secure(https)옵션이 켜져있을때 그렇다. 이 말은 쿠키를 자바스크립트로 읽어올 수 없다는 말이고 네트워크 감청을 통한 쿠키값 읽기를 방어한다는 말이다. 즉, XSS 공격을 통한 토큰 탈취를 방지할 수 있다. XSS 공격(Cross-Site Scripting) 
[node.js] cookie 값을 이용한 Token 관리
HTTP / request, response 역할 웹브라우저와 웹서버가 통신(커뮤니케이션)할 때 사용하는 통신규칙. html, css, javascript, image와 같은 파일들을 컨텐로서 서로 주고받기 위해서는 클라이언트와 서버가 서로가 알아들을 수 있는 공통의 약속인 메시지가 필요하다. 이 메시지는 크게 request를 위한 메시지, response를 위한 메시지로 구분된다. res.cookie를 해주려면 쿠키파서를 설치해줘야한다. 또한 보안설정을 위해 http-only : true 설정도 해준다 해당 API를 통해서 Cookie값을 프론트에서 호출해야하는데, root axios에 withCredentail : true를 지정해줘야 web에서 확인이 가능하다고 한다. ![]

[CS] Hashing, Cookie Day-81
Hashing Converting one value to another value by applying an arbitrary operation. What is good hasing? It should not take long to calculate the hash value. Every value must have a unique hash value. Even a very small change should have a different hash value. Hashing process When a client requests information from the server, Random password is set and requested. Server receives information from the client and DB, compares the requested data and the randomly set password t

[CS] 인증/보안 기초(HTTPS, 암호화, 인증서, 쿠키) Day-57
회원 가입 및 로그인, 로그아웃과 같은 기능 구현 클라이언트, 서버, 데이터베이스 암호와와 hashing, salting HTTP / HTTPS 차이점을 이해 권한 부여(Authorization) / 인증(Authentication) 쿠키의 작동 원리 세션 및 쿠키 / 토큰 / OAuth 통한 인증 구현 클라이언트, 서버, 데이터베이스 전체 동작 이해 회원가입 및 로그인 등의 유저 인증에 대해 구현 서비스의 보안과 관련된 방법, 원리 및 장점 및 단점 HTTPS 프로토콜 (== SSL(TLS)) HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해 HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법입니다. **HTTPS를 사용하는 이유는 안전하고, 데이터 제공자의 신원을 보장받을 수

쿠키(먹는 쿠키 아님)
쿠키 쿠키를 사용할 때 아래와 같은 두가지 쿠키를 사용한다. Set Cookie : 서버에서 클라이언트로 쿠키를 전달(응답) Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, http 요청시 서버로 전달한다. 아래와 같은 예시를 통해 이해를 돕겠다. 쿠키를 미사용 했을 경우 처음 웹 브라우저에서 welcome 페이지에 들어왔고, 서버가 안녕하세요 손님이라고 대답했다. 페이지에서 홍길동이 로그인 했을 경우 서버가 클라이언트에게 홍길동이 로그인되었다는 메세지를 보낸다. 그리고 아래와