본문 바로가기

분류 전체보기

(81)
Spring security6와 CSRF 사이드 프로젝트 개발 도중 .. Ajax로 Delete 요청을 하는데 자꾸 access-denied가 떴다 처음에는 admin, user 권한 때문인줄 알았지만 Spring Security에서 CSRF 공격 방지를 하기 위한 설정 때문이었다.  CSRF란?사이트 간 요청 위조(cross site request forgery)라는 뜻의 웹사이트 취약점 공격의 하나로, 사용자 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정웹사이트에 요청하게하는 공격이다  Spring Security와 CSRFSpring Security는 기본적으로 CSRF 공격을 방지하기 위해 CSRF 토큰을 사용한다. 해당 프레임워크를 사용할때 form 태그에 내가 추가하지 않은 값이 들어 있는 경우있다.바로 아래 사진의 input..
2024 정보처리기사 1회차 실기 합격 후기 정보처리기사 실기 합격 후기 입니다 ㅎㅎ  전공여부관련 전공 졸업생공부 기간총 4개월시험 횟수4번째취업취준생 우선 저는 이번 1회차 시험이 필기 만료 전 마지막 시험이고 4번째 실기 도전이었습니다 .. 🥹 매번 점수도 아슬아슬한편도 아닌 항상 2~30점대를 유지했습니다 그냥 포기하고 나중에 다시 할까 고민도 했습니다. 그치만 또 필기시험을 치기 너무 너무 싫어서,, 그래서 이번엔 인강의 도움을 받았습니다 제가 선택한 강의는 흥달쌤 강의였습니다https://www.youtube.com/@HeungSsaem 흥달쌤흥달쌤과 함께하는 IT 채널입니다. 정보처리기사 자격증 관련된 강의 및 실무 노하우, 프로그래밍 언어(JAVA, C언어, Python) 특강 등이 진행됩니다. 앞으로 진행 예정인 동영상은 IT 관..
메세지, 국제화 인코딩 오류 spring 국제화 적용을 할 때 인코딩 등 다양한 문제로 사진과 같은 에러를 경험한 적이 있을 것이다. 인터넷을 샅샅이 뒤져가며 IntelliJ의 이곳저곳에 encoding 적용을 해도 해결이 안될 경우 !  src/main/resources에서 messages.properties 파일이 있는지 확인해보자!!!! ...ㅎ ㅎ 본인의 경우 messages_en.properties, messages_ko.properties  만 추가하니까 맨 위 사진과 똑같은 에러가 생겼다 messages.properties 를 추가하니까 간단하게 해결됨! spring에서 기본적으로 messages.propeties 파일을 자동으로 로드하고 추가로 로케일에 맞는 파일을 로드하기 때문이라고 한다. 🤣
Enum과 Thymeleaf Enum 클래스 정의Enum의 상수를 이용해서 메세지, 국제화를 적용 시켜보기국제화의 기본 설정은 이미 다 되었다고 가정 Lunph.javapublic enum LunPh { NEW_MOON(0, "달이 태양과 같은 방향에 있어 보이지 않음", "🌑"), WAXING_CRESCENT(1, 6, "오른쪽에서부터 달이 보이기 시작함", "🌒"), FIRST_QUARTER(7, "달의 오른쪽 절반이 밝음", "🌓"), WAXING_GIBBOUS(8, 13, "오른쪽 절반 이상이 밝음", "🌔"), FULL_MOON(14, "달이 완전히 밝음", "🌕"), WANING_GIBBOUS(15, 20, "왼쪽에서부터 달이 점점 어두워짐", "🌖"), LAST_QU..
APSharing project APSharing project 개발 일지 프로젝트 제목APSharing(Astronomical Phenomenon Sharing)개발 일자2024.06.08~ 24.06.16개발 목적Open API 공부기술Java, Gradle ,Spring boot,Spring web, Thymeleaf,Git, Github, Aws Ec2,Linux, Nginx, Certbot, FileZilla, , Bootstrap설명오늘 또는 이달의 천문 현상(24절기, 달의 모양, 월식 등의 천문 현상, 오늘의 천문 사진)을 공유 목적아쉬운점분명 이정도면 괜찮겠지? 하고 깃허브에 올려도 종종 코드 리팩토링할 소스코드가 보인다. 로직을 제대로 분리하지 못한 부분들에 대한 아쉬움이 있다.다음에는 도커를 활용한 배포를 시도해야겠..
역직렬화 후 추가 가공 기존 JSON 데이터 구조와 원하는 데이터 구조 기존 Json의 items[ item1,item2, ... , item5] 구조가 Thymeleaf로 바인딩할 때 마음에 들지 않아서 날짜 기준으로 그룹화하기로 했다기존 구조원하는 구조"item" :{[{             "astroEvent": "화성 - 해왕성 최대근접(0°14′)",             "astroTime": "06:00",             "astroTitle": "",             "locdate": 20150120,             "seq": 1           }, {             "astroEvent": "합삭",             "astroTime": "22:15",        ..
reset/revert Git의 명령어 reset과 revert는 커밋 기록을 변경하는 명령어다 Reset Reset은 사용자가 지정한 커밋으로 이동시키는 명령어다git reset --hard 커밋_해시값  커밋 순서가 1 - 2 - 3 - 4 - 5 - 6 - 7이고 4로 돌아가고싶을때 reset을 쓰면1 - 2  - 3 - 4 로 돌아간다 사진처럼 나 4로 돌아가고 싶어 라고 git에게 얘기하면 그래 다 지워줄게 이러고 지워준다   Reset은 주로 혼자 작업하는 로컬에 쓰인다(협업에는 추천하지 않음) Revert Revert는 되돌리기 라는 뜻이다. 저장된 커밋의 변경사항을 반영한 새로운 커밋을 만드는 명령어다 git revert 커밋_해쉬값//revert 중단git revert --abort 커밋 순서가 1 - 2 - ..
Spring security에서 static resources 파일 적용 Spring Security란? 회원가입과 로그인을 도와주는 스프링 기반 웹 애플리케이션의 인증과 권한을 담당하는 스프링의 하위 프레임워크  @EnableWebSecurity모든 요청 url이 스프링 시큐리티 제어를 받도록 만드는 애너테이션 SecurityConfig@Configuration@EnableWebSecuritypublic class SecurityConfig { @Bean SecurityFilterChain filterChain(HttpSecurity httpSecurity)throws Exception{ httpSecurity.authorizeHttpRequests( (authorizeHttpRequests)-> authorizeHttpRe..
valid와 validation @Valid JSR-303 표준 스펙으로 Bean Validatior(빈 검증기)를 이용해 객체의 제약조건을 검증하도록 지시하는 어노테이션기본적으로 컨트롤러에서만 동작  LocalValidatorFactoryBean//validation implementation 'org.springframework.boot:spring-boot-starter-validation' spring에서는 LocalValidatorFactoryBean가 제약 조건 검증을 처리함위의 validation 의존성을 추가하면 해당 기능들이 자동 설정됨 ArgumentResolver 스프링에선 ArgumentResolver가 클라이언트가 보낸 요청 데이터를 적절한 형식으로 변환하여 컨트롤러 메서드의 매개변수에 주입해줌 @RequestB..
Bcrypt와 비밀번호 암호화 Bcrypt를 이용해 password 암호화하는 법  Bcrypt란 강력한 암호 해시 함수로 비밀번호 저장과 관련된 보안에 사용하는 라이브러리주요 기능으로 Key Stretching, Salt가 있음*key stretchinng이란 만들어진 해시 값을 반복 연산하여 브루트포스 공격을 어렵게 만드는 방법*Salt란 암호화 하는 값에 추가 입력으로 사용되는 랜덤 데이터  주요 메서드gensalt()솔트값 생성 함수hashpw(비밀번호, 솔트값)비밀번호 해시화 함수checkpw(비밀번호, 해시화된 비밀번호)비밀번호 검증 함kdf(비밀번호, 솔트값, 도출할 키의 길이, 해시 계산 반복횟수)비밀번호 바탕의 안전한 암호화 키를 도출  이용예시PasswordBcryptimport org.mindrot.jbcrypt...