728x90
반응형

작성일자 : 2021.01.17

 

1. 암호화란?

개발에서의 암호화란 어떠한 정보를 특정 알고리즘을 이용하여 의미 없는 데이터로 변경하는 것 (복호화는 그 반대)

 

 

2. 암호화 키

암호화, 복호화 알고리즘 연산에 사용되는 값

ex) 공개 키 ,개인 키 etc..

 

 

3. 암호화 종류

 

1) 단방향 암호화(Hashing)

암호화는 가능하나 복호화가 불가능하여 원래의 데이터로 변환이 불가능하다.

저장된 암호화된 비밀번호와, 입력 받은 사용자의 비밀번호를 암호화하여 그 값이 동일한지를 비교하여 인증을 하는 방식으로 비밀번호 암호화에 주로 사용.

 

ex) MD5 (Message-Digest), SHA (Secure Hash Algorithm)

 

 

2) 대칭키(비공개키) 암호화(Symmetric)

암호화, 복호화 시 동일한 키를 사용함

 

ex) DES (Data Encryption Standard), AES (Advanced Encrypting Standard)

 

 

3) 비대칭키(공개키) 암호화(Asymmetric)

암호화, 복호화 시 서로 다른 키를 사용함, 

공개키로 암호화하고, 개인키로 복호화. 대칭형 암호에 비해 느리다.

 

ex) RSA(Rivest, Shamir, Adleman - 제작자 이름)

 

* 개인키와 공개키의 위치를 바꿔 실행하면 '전자 서명' 이 된다.

 

 

728x90
반응형

'보안' 카테고리의 다른 글

[SSL] Apache, Tomcat SSL 적용  (0) 2021.01.24
[보안] SSL  (0) 2021.01.24
728x90
반응형

작성일자 : 2021.01.01

 

개요 :

 

db 공부 좀 할겸 자격증을 취득할까 생각했다

 

외국 db 자격증은 너무 비싸서 국내 자격증 찾아봤는데 몇개 없었음

 

sqlp 딸까했는데 생각보다 난이도가 높더라고.. sqlp 는 너무 어려워 sqld 를 공부하기로 했음

 

 

36회 sqld 후기 :

코로나로 인한 취소, 37회 자동 신청

 

37회 sqld 후기 :

코로나로 인한 취소인줄 알고있다가 아니란걸 알고 하루 전날 급하게 취소 후 환불

 

38회 sqld 후기 :

더운 여름날 시험보러 나가고싶지않아서 신청도 안함 

 

39회 sqld 후기 :

시험장소 : 서울 성남고등학교

시험일정 : 2020.11.29

시험환경 : 종이시험지, OMR 카드, 1과목 객관식 10문제, 2과목 객관식 32문제/주관식 8문제

 

내용 보니까 기본 쿼리 내용들은 대부분 아는게 많아서 이론 부분과 뒤쪽 처음보는 함수들 위주로 공부했다

 

데이터산업진흥원 사이트에 이론 정리해놓은게 있는데 해당 내용 출퇴근하면서 핸드폰으로 슥슥 봤고, 뒷내용은 노란색 실전문제 책 사서 문제풀이했음

 

기간은 하루에 15분씩 한달반정도 공부했다

 

개념자체가 크게 어려운건 없었는데 대여섯줄 이상인 쿼리가 나오는 문제는 해석하기가 힘들었다 지금도 잘 못함

 

슈퍼타입 서브타입 개념 읽으면서 오 디비에서도 상속 기능이 있나 생각했었음 ㅋㅋ

 

논리적 데이터 모델의 예시였고 구현할땐 결국 통합 or 분리된 테이블을 생성하는거였음

 

 

시험 당일 엄청 추웠다

 

8시반까지 입실하라고 문자로 안내받았는데 9시 5분전에 들어가도 별말 없었음 시험 시작 전까지만 가면 되는듯하다

 

이게 또 시험이라고 긴장이 되긴했음 근데 시험은 전체적으로 쉬웠다

 

문제에 함정이 있다거나 헷갈리는 보기가 여러개 있지도 않았다 맞추라고 내는 느낌 

 

때문에 알면서도 실수로 틀리는 경우는 적을 것 같다 알면 맞추고 모르면 틀림

 

노란 책에서 그대로 나온 문제도 있고, 보진 않았는데 이전 기출에서와 똑같은 문제도 꽤 나왔다고한다

 

근데 풀때는 엄청 쉬웠는데 막상 점수는 생각보다 낮게 나왔다 내가 몰랐을 뿐 사실 함정이 있었나?

 

틀린 문제 피드백 좀 하고싶은데 데이터산업진흥원은 시험문제, 정답 전부 비공개다 아니 정답은 왜??

 

별 생각없이 수험표에 풀이한 답 적어서 나왔다가 정답을 알수가 없어 걍 버렸다 어디서 뭘 틀렸는지도 잘 모르겠다

 

시험보고 한달정도 뒤에 결과를 발표하는데 시험이 쉬웠어서 기다리는동안 덤덤했다 그래도 막상 합격발표 보고나니깐 좀 기뻣음 

 

 

sqld 는 시험이 난이도가 낮다보니(현직자 기준) 스펙으로써 인정받긴 힘들거같고, 다만 일부 기업에서는 

 

취업 시 가산점을 준다하니 전공 학부생 or 취준생이 따기 좋을 것 같다

 

 

시험얘기

 

1과목 정규화는 꾸준히 2문제 이상은 나오는 것 같음 1,2,3차 정규화 정도는 구분할 수 있으면 좋음

 

2과목 계층형 질의랑 그룹함수 cube, rollup, grouping sets 은 풀어보고도 잘 모르겠어서 시간 내서 공부했는데

 

어려워서 그런지 문제도 응용단계까지는 안내는 것 같음

 

계층형 질의는 문법 키워드, 어떨때 순방향, 역방향인지, 각 방향에 따라 결과가 어떻게 차이나는지 알고있으면 될 것 같고,

 

그룹함수는 동일한 파라미터일 때 각 함수의 결과 개수, 형태 차이랑 grouping 적용 방법 정도만 알고있어도 될 것 같다

 

728x90
반응형

'일기' 카테고리의 다른 글

랜섬웨어  (0) 2019.06.23
1901 리눅스 마스터 1급 후기  (4) 2019.06.08
728x90
반응형

작성일자 : 2020.12.20

환경 : Spring Boot, Chrome

 

1. 개요

1.1) Web Cache(HTTP Cache)란? 

 

  • 서버 지연을 줄이는 목적으로 정적 리소스 등의 웹 문서들을 임시 저장하여 재활용하기 위한 기술
  • 어디에 적용하느냐에 따라 Browser Cache, Proxy Cache, Gateway Cache 로 구분지을 수 있음

 

- 웹 캐싱 방법

  • Response 에 Cache-Control Header 사용

 

 

1.2) Cache-Control ?

  • 서버와 브라우저 사이의 캐시 정책. 여러 지시자들을 사용하여 옵션을 설정할 수 있음 

 

크롬 개발자 도구에서 Cache-Control 헤더를 아래와 같이 확인 가능하다.

 

 

 

- Cache-Control 기본 지시자 

  • no-cache : 캐시 데이터가 있어도 무조건 서버로부터 유효성을 재검증함 (캐시를 사용하지 않는게 아님)
  • no-store : 캐시 데이터를 저장하지 않음 (캐시를 사용하지 않음)
  • max-age=[sec] : 캐시 데이터가 유효한 시간을 설정. 해당 시간이후에 캐시 데이터가 만료 
  • must-revalidate : 만료된 캐시 데이터를 무조건 서버로부터 유효성을 재검증함

 

- 캐싱 데이터 유효성 검증 방법 (ETag 활용)

  1. 브라우저가 서버로 첫 요청시, 서버는 응답에 해당하는 데이터와과 함께 Etag 를 반환 (이 떄 응답 데이터, Etag 는 캐싱)
  2. 브라우저가 서버로 재요청시, If-None-Match 헤더에 캐싱된 Etag 를 담아서 요청 전송
  3. 서버는 신규 요청에 의해 만들어진 Etag 와 If-None-Match  헤더에 담긴 Etag 를 비교하여, 다르면 새로운 Etag 와 함께 응답 반환. 동일하면 304(Not Modified) Return Code 를 반환

  4. 브라우저는 304(Not Modified) Return Code 반환 시 기존 캐싱 데이터를 활용하며, 200 Return Code 로 반환 시, 1. 으로 돌아감

 

 

1.3)  ETag(Entity Tag) ?

  • 웹 리소스의 특정버전에 할당한 식별자

 

- ETag 사용 예시 :

etag 구현체를 필터로 등록하여 사용. 해당 구현체가 필터에 등록되어 Request, Response 에 etag 를 부여/검증한다.

 

@Bean
public FilterRegistrationBean shallowEtagHeaderFilter() {
    FilterRegistrationBean frb = new FilterRegistrationBean();
    frb.setFilter(new ShallowEtagHeaderFilter());
    frb.addUrlPatterns("MY_PATH/*");
    return frb;
}

 

위처럼 ShallowEtagHeaderFilter 를 등록 시 Etag 를 생성 및 검증해주며, Etag 가 존재하면 동일 URI 재요청 시 자동으로 If-None-Match 헤더에 ETag 가 추가해준다.

 

 

2. 적용 예시

 

2.1 Cache Control 활용

 

* WebMvcConfigurer 를 활용하여 정적 리소스 경로를 설정하였다 가정

 

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        CacheControl cacheControl = CacheControl 
                .maxAge(60, TimeUnit.SECONDS) 
                .mustRevalidate();

        registry.addResourceHandler("**/*.js") 
                .addResourceLocations("classpath:/static/")
                .setCacheControl(cacheControl) 
                ;
    }
}

 

: 위 설정 이후, **/*.js 의 요청은 Cache 이 설정됨

 

 

index.html

 

<script src ="http://localhost:8080/test.js"></script>

 

 

- http://localhost:8080/ 첫 요청 시

 

index.html 반환 및 index.html 에 의해 test.js 요청

 

200 응답코드와 함께 설정한 Cache-Control 반환되며 해당 응답은 캐싱된다

 

 

 

- http://localhost:8080/ 두번째 요청 시

 

index.html 반환 및 index.html 에 의해 test.js 요청

 

요청이 캐싱 이후 60초 이내일 경우(max-age=60) 해당 캐시는 유효하다 판단하며 캐싱 데이터를 재사용한다

 

* 이 경우 서버와 통신하지 않기 때문에 데이터가 변경되더라도 브라우저에서는 알 수없음 

* 단 브라우저 URL 입력창에 직접 호출하는 경우, 무조건 서버와 통신하여 변경 여부를 체크 (Chrome)

* from memory cache, from disk cache 두 종류가 있는데, 일반적인 memory, disk 차이와 비슷하다 어디에 저장할지는 Chrome 이 결정 

 

 

 

2.2 Etag 활용

 

shallowEtagHeaderFilter 필터 설정

 

@Bean
public FilterRegistrationBean shallowEtagHeaderFilter() {
    FilterRegistrationBean frb = new FilterRegistrationBean();
    frb.setFilter(new ShallowEtagHeaderFilter());
    frb.addUrlPatterns("/*");
    return frb;
}

 

: 위 설정 이후, /* 의 요청은 Etag 가 설정됨

 

 

Cache-Control 설정

 

@RequestMapping("/")

public void getIndexPage(... HttpServletResponse response)
{

   ...

   response.setHeader("Cache-Control","no-cache");

   ...

}

 

 

 

 

- http://localhost:8080/ 첫 요청 시

 

Etag 와 함께 응답 반환

 

 

 

- http://localhost:8080/ 두번 째 요청 시

 

Request 에  Etag 를 함께 전송

 

 

 

Etag 검증 후 Not Modified(304) 반환

 

 

728x90
반응형

'Java' 카테고리의 다른 글

[SpringBoot] Gradle 변수 Property 활용  (0) 2022.05.30
[MyBatis] List 형식 멤버 변수 조회  (0) 2021.02.12
[SpringBoot] H2 연동  (0) 2020.07.21
[Spring] App 구동 후 자동 작업 실행  (0) 2020.02.23
Stream Example  (0) 2020.01.05

+ Recent posts