들어가기전에 SSR 의 대표적인 도구로 JSP CSR 의 대표적인 도구로 React.js SSR 은 SEO 작업을 해야할 때 사용한다. 학생때는 딱 이 정도 깊이로만 알고 있었는데 HTML을 PDF 로 변환하는 작업을 진행하면서 개념이 정확히 정립된 것 같아 내용을 공유하고자 합니다. SSR 과 CSR 을 구분하는 기준 SSR 과 CSR을 구분하는 기준은 아래와 같습니다. 바로 서버에 요청 시 완성된 HTML DOM 을 Response 로 반환을 하느냐 인데요. 다른말로 표현하자면 JavaScript 가 HTML DOM 을 조작하느냐 아니냐로 구분된다 할 수 있습니다. Response 로 전달된 HTML 가 JS 실행 전과 실행 후가 동일하다면 SSR, 다르다면 CSR 로 보셔도 무방합니다. 글로만 설명..
-
[회고록] 프로젝트 시작 후 3개월, 나는 그동안 무엇을 했을까 (PocketMark v1.0)
12월초에 팀 프로젝트 PocketMark 를 시작하여 3개월의 시간이 흘렀다. 경험하고 싶었던 나 자신과의 싸움(레거시 리팩토링)은 실컷 경험할 수 있어서 좋았지만 이때 쯤이면 솔직히 계획했던 메인서비스와 기본적인 부가서비스들이 모두 구현완료되어 있을 줄 알았다. 자동차는 아니더라도 자전거 정도는 만들어질 줄 알았었는데 대신 킥보드가 만들어져 있었다. 뭐... 일단 굴러가기는 하니 다행이라고 해야하나... 팀원 한분이 취직으로 그만 두셨지만 나는 앞으로도 계속 사이드프로젝트로 두고 키워나갈 예정이다. 3개월간 내가 한 일은 크게 두 가지이다. 첫번째는 사용자 도메인(회원, 로그인, 인증)을 제외 한 모든 도메인의 설계와 서비스 로직을 구현하고 개선 하는 일. 두번째는 반복적으로 해야만했던 노가다성 작업..
-
CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (1) - CSRF 공격이란 무엇인가
해당 포스팅 시리즈는 현재 목차 2번까지 작성되었습니다. 목차 1. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (1) - CSRF 공격이란 무엇인가 2. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (2) - 가상의 브라우저에 대한 CSRF 공격, 서버의 책임과 브라우저의 책임 3. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (3) - CSRF 공격을 직접 시도해보자 (Safari 브라우저) 4. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (4) - SOP, CORS, Browser, Third-Party Cookie, SameSite) 5. ..
-
[AWS] AWS WAF 적용 시, 주의해야 할 Default 설정들
AWS Immersion Day 에서 소개 받은 AWS WAF v2 를 적용하면서 Default 설정 때문에 필자가 직면했던 문제점들에 대한 포스팅입니다. 이전 포스팅 [AWS] 서비스에 WAF 적용하기 WAF 란? WAF(Web application firewall) 는 OSI 4레벨 layer 가 아닌 7레벨 Layer 에 적용되는 방화벽이다. WAF 라는 서비스를 사용하여 OWASP’s Top 10 Web Application Vulnerabilities 에 대한 방어를 어느정도 쉽게 구축할 developer-ping9.tistory.com 서론 보통 회사의 직원으로써 자사상품은 항상 좋은점만 소개한다. AWS WAF 도 그랬다... (그래서 홀렸다...) AWS 에서 제공하는 Rule 들로 WAF..
-
[Network] DNS 동작원리 간단정리 (+ nslookup)
이 글은 아래의 포스팅의 내용을 재구성한 포스팅입니다. DNS란 뭐고, 네임서버란 뭔지 개념정리 | 살살살림 DNS란 건 뭐고, DNS 서버란 건 뭐고, 네임서버란 건 뭐고 이름부터 혼란스러운 개념. 사용자의 입장에서 왜 DNS 역할이 필요한지와 추천할 만한 무료 네임서버에 대해서 알.아.보.자. gentlysallim.com DNS 동작개요 DNS Server 관리 주체 Authoritative DNS Server 를 보통 네임서버라고 부른다. DNS 검색속도 및 캐싱 적중률 대부분의 요청은 통신사의 ISP 서버의 캐싱으로 동작한다. (70%~90% 적중) 캐시가 적중하지 않을 경우 네임서버(Authoritative DNS Server)의 성능에 따라 도메인의 검색속도에 영향을 줄 수 있다. 검색속도 ..
-
커스텀 어노테이션을 직접만들어 개발비용을 줄여보자!
개인적인 주관이 섞여있는 포스팅으로 정답은 아닙니다. 범용적이고 관례적인 어노테이션은 동료개발자와 협업에 유리한 이점이 있다는 것 고려하시며 Trade-off 를 저울질 해보시길 바랍니다. 커스텀 어노테이션을 동료개발자와 충분한 협의 없이 사용 시 유지보수비용이 증가하게 됩니다. 필자가 불편했던 어노테이션들 대표적으로 @PreAuthorize, @Sql, @RequestMapping 등과 같이 String 값을 반복적으로 넣어주어야 하는 어노테이션들이 매우 불편하게 느껴졌다. 사용빈도는 꽤 큰 것에 비해, IDE 자동완성 기능 이후 따로 String 값을 지정해주어야 하는 두번의 작업으로 느껴졌다. @GetMapping("/product/vip") @PreAuthorize("hasRole('ROLE_VI..
-
[AWS] Setting up Cloudfront signed cookies for multiple paths in Java, Kotlin
What we need to do 1. Find AWS SDK Library 2. Assgin openssl rsa public key to Cloudfront 3. Set SignedCookie to Response in Application Code Example Kotlin Code fun getBookContentResponse( req: HttpServletRequest, res: HttpServletResponse, bookContentId: String ): BookContentResponse { val expireCalendar = Calendar.getInstance() expireCalendar.add(Calendar.MINUTE, 60) val resourcePath = "$bookC..
최근 포스트
-
[MySQL] DB에 이상한 데이터가 있어요! (MySQL Strict mode)MySQL 2023.10.02 18:02
발단 데이터 중에 누가봐도 이상한게 있었다. 테스트 데이터겠지, 그 때 어플리케이션 코드가 이상했겠지로는 설명이 안되는 최신데이터로 말이다. MySQL Strict Mode MySQL 5.7 이상 버전들은 Strict Mode 가 기본설정이지만, 그 이하 버전들은 Strict Mode 가 꺼져있다. Strict Mode 가 꺼져있다면 에러가 나야 할 쿼리들이 에러 없이 실행된다. varchar(4) 로 설정했지만 10글자의 String 을 INSERT 문으로 작성하여도 성공적으로 실행된다. 아래 포스팅에 잘 설명되어 있으니 참고하자. MySQL Strict mode 끄기/켜기 MySQL 5.7 부터는 STRICT_MODE 가 기본 설정이라고 하니 별도의 설정 작업이 필요없다. www.lesstif.com..
-
[테스트코드] Test Fixture 로 *.sql 파일을 사용해도 될까?테스트코드 2023.10.02 17:12
Test Fixture 세팅 회사에서 레거시 SSR 프로젝트를 FE/BE 가 각각 작업할 수 있도록 분리한적이 있었다. 해야할 일이 너무나도 많았다. View 에서 필요한 API 들의 목록을 정리 및 새롭게 작성 언어를 Java 에서 Kotlin 으로 변경 Spring Framework 5 에서 Spring Boot 2.7.3 으로 변경 JPA, Security 환경 세팅 모든 API 에 대한 독립 인수테스트 작성 코드 리팩토링 대충 위와 같은데, Kotlin 을 처음 다뤄보던 시기라 환경설정부터 Java 와 다르게 동작하는 경우가 잦았다. 시간의 압박때문에 타협을 본 것 중 하나가 Test Fixture 를 *.sql 파일을 이용하여 작성하였다는 것이다. @Sql( value = [ "classpath..
-
[MySQL] view 테이블 생성시 Access denied; you need (at least one of) the SUPER or SET_USER_ID privilege(s) for this operationMySQL 2023.10.02 15:56
원인 view, function 등을 생성할 때 definer 를 지정해주지 않으면 접속한 계정으로 definer 가 설정 됨 해결 create definer 구문을 사용하여 생성 create definer = my_account@`%` view v_user_product_info as (select ...) Reference ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER or SET_USER_ID privilege(s) for this operation MySQL 관련 문의사항이 들어온 내용을 정리 한 내용입니다. 내용은 이렇습니다. 유저가 함수를 생성하는데 에러가 발생한다는 것입니다. 확인한 에러는 아래와 같습니다. E..