일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커
- 스프링부트
- spring boot
- IntelliJ
- dfs
- Linux
- HTTP
- 프로그래머스
- 스프링
- 명령어
- 스프링 부트
- 주니어
- 문자열
- bfs
- 해시맵
- 백엔드
- 해결
- 이직
- docker
- 자료구조
- HashMap
- 인텔리제이
- 구름LEVEL
- 구현
- Java
- spring
- 배열
- 개발자
- 스타트업
- 코딩테스트
- Today
- Total
목록보안 (2)
마이의 개발 블로그
배경솔루션 개발 도중 XSS 취약점이 발견되어 이를 어떤 방식으로 해결할지 탐색하고 팀과 의견을 나누는 시간이 필요했습니다. XSS에는 여러 가지 방식이 있지만 특히 웹에서 텍스트 에디터를 통해 사용자가 게시글 본문을 입력하는 등 일반 유저가 HTML을 조작할 수 있는 경우에 해당 문제가 종종 보고되는 것을 발견할 수 있습니다. 보안유지를 위해 더 자세하게 기술할 수는 없지만 저의 경우도 비슷한 맥락의 문제가 발견되어 이를 해결하는 과정에서 알게된 내용들을 작성해보고자 합니다.크로스 사이트 스크립팅(Cross Site Scripting, XSS)이란?XSS는 관리자가 아닌 유저가 클라이언트측에 악의적인 스크립트를 삽입하여 이상 동작을 유발시키는 행위로 웹 어플리케이션의 서버 - 클라이언트 구조에서 주로 ..
배경 이미 암호화된 문자열로 발급된 키값을 환경변수 등에서 가져와 프로그램에서 사용하는 경우 문자열을 기준으로 작업할 수 있도록 코드의 변경이 필요합니다. 또한 시크릿 키의 경우에도 암호화 되지 않은 문자열을 기준으로 한 번 더 암호화하는 과정을 거쳐야 하는데 보통 제시되는 예시들은 시크릿 키를 별도로 암호화하여 발급한 후에 그 암호문을 그대로 사용하는 형태로 동작하는 것이 대부분이었습니다. 그래서 약간의 수정을 거쳐 현재 프로젝트에 맞는 형태로 input과 output을 가공하여 사용하는 클래스를 작성했습니다. 이 예제는 AES 암호화 알고리즘을 사용하여 1) 암호화(encrypt), 2) 복호화(decrypt) 동작을 수행하는 코드입니다. 두 동작 모두 인수로 암호화되지 않은 String 타입 시크릿..