일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 접근지시자
- auto.create.topics.enable
- raw 타입
- Study Halle
- 합병 정렬
- Switch Expressions
- yield
- 프리미티브 타입
- 바운디드 타입
- 자바스터디
- github api
- 로컬 클래스
- 스파르타코딩클럽
- 제네릭 타입
- 상속
- 익명 클래스
- System.out
- 함수형 인터페이스
- 브릿지 메소드
- System.in
- 항해99
- 자바할래
- annotation processor
- junit 5
- 정렬
- throwable
- 람다식
- 제네릭 와일드 카드
- System.err
- docker
- Today
- Total
목록Diary (125)
코딩하는 털보
이번주 마무리 이번 WIL의 키워드 Spring : ORM, SQL, MVC 배운것 Spring MVC, Spring Security, XSS, CSRF ORM이란 참고 : https://gmlwjd9405.github.io/2019/02/01/orm.html Object Relational Mapping, 객체-관계 매핑 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. -> 객체 모델과 관계형 모델 간에 불일치가 존재한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. 데이터베이스 테이블 Object 객체를 통해 간접적으로 데이터베이스 데이터를 다룬..
나의 항해 블로그에 계정 회원가입/로그인/로그아웃 기능을 추가하려고 한다. JWT를 사용해서 인증하는 것을 해보고싶긴하지만, 일단 세션 방식의 인증과 시간이 남는다면 소셜 로그인 기능까지만 추가할 예정이다. 회원 가입 계정 클래스 만들기 @Entity @Getter @NoArgsConstructor public class Account extends Timestamped{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(nullable = false) private String username; @Column(nullable = false) private String password; @Column(nullable ..
새로운 과제를 받았다 과제에 대한 요구사항을 기획자로부터 받았다고 생각하고 분석해보자. Requirement POJO 계정 도메인 모델 추가 {nickname, password}, 회원가입 기능 구현 댓글 도메인 모델 추가 {article, writer, content}, CRUD Spring login, authentication 레이어 별 단위 테스트 작성 Open api kakao 소셜 로그인 HTML 회원가입 페이지, 로그인 페이지 작성 API Contoller/Service/Repository Controller : Http 요청을 받거나 돌려주는 역할 Service : 사용자 요구사항을 처리하기 위한 비즈니스 로직 Repository : 데이터베이스에 접근하여 조회나 변경 등 데이터 자원을 처..
Spring Security CSRF 방어 설정으로 인해 Postman이 변경 요청을 할 때 403 status만 받아왔다. Postman에 CSRF 토큰을 집어넣는 방법이 있을 수도 있지만 나는 그냥 Profile 별로 다른 보안 설정을 사용하려고 한다. @Configuration @Profile("dev") public class DevWebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().permitAll().and() .csrf().disable() .fo..
오늘은 어제 공부한 내용을 토대로 스프링 부트에서 CSRF 공격을 막을 수 있도록 적용해보자. CSRF 참고 : https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0 어제 JWT 토큰을 저장하는 방식중 쿠키 방식을 사용하면 CSRF 공격에는 노출되는 대신에 XSS 공격으로 인해 토큰이 탈취되는 것을 막을 수 있다고 했다. 쿠키에 저장하면서도 CSRF 공격을 막을 수 있도록 하는 방안은 Cookie Referer Check , 그리고 Csrf Token 사용을 통해 방지 할 수 있다. Cookie Referer Check Request의 헤더에는 요청에 대한 도메인 정보가..
오늘은 스프링 부트에서 XSS, CSRF 공격을 막을 수 있도록 조치해보려고 한다. 참고 : http://homoefficio.github.io/2016/11/21/Spring%EC%97%90%EC%84%9C-JSON%EC%97%90-XSS-%EB%B0%A9%EC%A7%80-%EC%B2%98%EB%A6%AC-%ED%95%98%EA%B8%B0/ https://jojoldu.tistory.com/470 XSS XSS(Cross-Site Scripting) 공격은 권한이 없는 사용자가 웹 사이트에 스크립트를 강제로 삽입하는 공격 기법이다. 참고 : https://noirstar.tistory.com/266 Persistent XSS 공격자가 웹 애플리케이션에서 XSS 취약점이 있는 곳을 파악하고 악성스크립트를..
이번주 마무리 이번 WIL의 키워드 Spring : DI, IoC, Bean 배운것 Git, Spring, Docker, Junit DI(Dependency Injection)/IoC(Inversion of Control) DI와 IoC는 Spring 개발의 핵심적인 특징이다. 이 둘은 Spring에 국한된 용어가 아니다. Spring은 객체지향을 위해 만들어진 프레임워크이며 객체지향을 위해 사용되는 로직이 DI와 IoC이다. DI https://rockintuna.tistory.com/153 DI는 사용과 제작을 분리하는 강력한 메커니즘 중 하나이다. 객체를 필요로하는 클래스 내에서 직접 객체를 생성하면 특정 클래스에 의존하게 되어 유연성이 떨어진다. 그리고 유지보수도 어렵다. 그렇다고 setter같은..
sailinglog에 단위 테스트를 만들어야 한다! 사실 이미 늦었다. 클린 코드에서 봤던 TDD 방법론에는 실제 코드를 작성하기 전에 테스트를 먼저 작성해야 한다. 테슽 FIRST 원리에서 T(Timely)에 어긋나기도 한다. https://rockintuna.tistory.com/150?category=886434 하지만 당연히 없는 것 보다는 낫지 않을까! 일단 두들겨 보자. JUnit5으로 테스트하기 https://rockintuna.tistory.com/56 JUnit은 자바 프로그래밍 언어용 단위 테스트 프레임워크이며, 자바 TDD(테스트 주도 개발)의 핵심적인 역할을 한다. 일단 테스트를 작성하고 실행하기 전에 해야할 일들이 있었다. (junit을 사용하려면 해야하는 작업은 아니고 그냥 개인..
새로운 게시글 포스팅 어플리케이션을 개발했다. 오늘의 이슈 http://rtonepage.shop/ 예전에 flask 앱을 실행시켜놨던 클라우드서버라서 80->5000 포트 포워딩이 설정되어 있었다. 덕분에 iptables 포트 설정을 확인하고 포트 포워딩을 해제하는 방법을 배워간다. 확인 sudo iptables -t nat -L 해제 sudo iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000 (해제는 설정했을때의 옵션에서 -A를 -D로만 바꿔서 했다.) 자 드디어 jar로 말아서 aws에 올려 실행했다. (Executable jar!) 무난하게 잘 돌아가는것 처럼 보였으나! 왠걸 데이터의 시간이 이상했다..
오늘은 Spring 3주차 강의 듣고나서 남는 시간에 어제 보다만 git 강의를 마저 봤다. 지옥 git이 새로운 강의로 대체된 것을 이제 알아서 새로운 강의로 갈아탔다. 참고 : https://opentutorials.org/course/3841, https://opentutorials.org/course/3842 Git Backup 용어 정리 지역 저장소 : 내 pc에서 작업하거나 버전을 생성하는 영역 원격 저장소 : 지역 저장소를 업로드해서 같은 상태를 유지하는 영역 push : 지역 저장소의 버전을 원격 저장소로 업로드하여 같은 상태로 만들기 clone : 원격 저장소로부터 버전을 복사하여 지역 저장소 생성 pull : 원격 저장소로부터 버전을 불러와서 같은 상태로 만들기 git hosting :..