Development
-
SQL Injection이란 웹 애플리케이션에서 데이터의 유효성 검증을 하지 않아, 개발자가 의도하지 않은 동적 쿼리(Dynamic Query)를 생성하여 조작된 SQL문으로 DB 정보를 열람하거나 변경할 수 있는 보안 취약점 대표 예시 SELECT * FROM user Where userId = '${userId}' and userPw = '${userPw}' 위의 경우에 ${userPw}에 pw' or 1=1 값을 입력하면 SELECT * FROM user Where userId = 'valideUserId' and userPw = 'pw' or 1=1 실행되어 id만 알아도 로그인이 되는 현상이 발생할 수 있다. 이러한 현상을 방지하기 위해서 DB layer에서 Prepared Statement 기..
[SQLI] SQL Injection ( + Mybatis )SQL Injection이란 웹 애플리케이션에서 데이터의 유효성 검증을 하지 않아, 개발자가 의도하지 않은 동적 쿼리(Dynamic Query)를 생성하여 조작된 SQL문으로 DB 정보를 열람하거나 변경할 수 있는 보안 취약점 대표 예시 SELECT * FROM user Where userId = '${userId}' and userPw = '${userPw}' 위의 경우에 ${userPw}에 pw' or 1=1 값을 입력하면 SELECT * FROM user Where userId = 'valideUserId' and userPw = 'pw' or 1=1 실행되어 id만 알아도 로그인이 되는 현상이 발생할 수 있다. 이러한 현상을 방지하기 위해서 DB layer에서 Prepared Statement 기..
2023.07.29 -
Valve request processing pipeline에 특정 기능을 수행하기 위해 추가될 수 있는 컴포넌트 introduced with Tomcat 4 Valve는 서블릿의 필터 개념을 서버와 가상호스트 레벨로 확장시킨 개념 웹엔진, 가상호스트, 컨텍스트 (Engine, Host, Context) 순서로 Valve 코드를 실행시키게 되며, 필터와 Valve가 모두 설정되어 있는 경우에는 Valve의 설정 모두 적용된 이후에 필터가 적용되게 된다. AccessLog Tomcat Layer에 AccessLog 설정 시 이용 pattern 값은 원하는 형태로 변경하여 사용 관련 attribute 정보 : https://tomcat.apache.org/tomcat-7.0-doc/config/valve.h..
[TOMCAT] Valve에 대해서(RemoteIp, Accesslog)Valve request processing pipeline에 특정 기능을 수행하기 위해 추가될 수 있는 컴포넌트 introduced with Tomcat 4 Valve는 서블릿의 필터 개념을 서버와 가상호스트 레벨로 확장시킨 개념 웹엔진, 가상호스트, 컨텍스트 (Engine, Host, Context) 순서로 Valve 코드를 실행시키게 되며, 필터와 Valve가 모두 설정되어 있는 경우에는 Valve의 설정 모두 적용된 이후에 필터가 적용되게 된다. AccessLog Tomcat Layer에 AccessLog 설정 시 이용 pattern 값은 원하는 형태로 변경하여 사용 관련 attribute 정보 : https://tomcat.apache.org/tomcat-7.0-doc/config/valve.h..
2023.07.17 -
Maven은 Dependency를 관리해주는 툴로 POM이라는 XML을 통해서 설정한다. 얼마 전에 다른 사람이 작성한 pom.xml을 보게 되었는데 주석으로 bom이라고 쓰여있는 것을 봐서 오타가 났다보다 생각했는데 후에 찾아보니 BOM이라는 기능이 따로 존재하는 것이었다. BOM ( Bill Of Materials) 자제 명세서 BOM은 특별한 POM의 종류라고 생각하면 될 거 같다. Dependency를 관리하는 것은 유사하지만 한 곳에서 중앙 집중형으로 의존성과 버전을 관리할 수 있게 도와줍니다. BOM을 사용하는 대표적인 장점이 버전 관리입니다. Maven을 사용하다 보면 버전 충돌의 문제를 많이 겪게 됩니다. 이러한 문제를 해결하기 위해서 BOM을 사용합니다. 루트 pom.xml 4.0.0 c..
[Maven] Bom이란(type, scope)Maven은 Dependency를 관리해주는 툴로 POM이라는 XML을 통해서 설정한다. 얼마 전에 다른 사람이 작성한 pom.xml을 보게 되었는데 주석으로 bom이라고 쓰여있는 것을 봐서 오타가 났다보다 생각했는데 후에 찾아보니 BOM이라는 기능이 따로 존재하는 것이었다. BOM ( Bill Of Materials) 자제 명세서 BOM은 특별한 POM의 종류라고 생각하면 될 거 같다. Dependency를 관리하는 것은 유사하지만 한 곳에서 중앙 집중형으로 의존성과 버전을 관리할 수 있게 도와줍니다. BOM을 사용하는 대표적인 장점이 버전 관리입니다. Maven을 사용하다 보면 버전 충돌의 문제를 많이 겪게 됩니다. 이러한 문제를 해결하기 위해서 BOM을 사용합니다. 루트 pom.xml 4.0.0 c..
2022.11.14 -
에러 내역 java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value at org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:160) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:109) ~[tomcat-embed-core-8.5.4.jar:8.5.4] 쿠키에 유효하지 않은 문자[..
[Web] Cookie Invalid Character[32] Error 확인 및 해결에러 내역 java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value at org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:160) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:109) ~[tomcat-embed-core-8.5.4.jar:8.5.4] 쿠키에 유효하지 않은 문자[..
2022.11.04 -
기술 면접을 보며 나왔던 질문 중에 암호화 관련된 질문이 있어서 정리를 하게 되었습니다. 암호화, 해시의 개념 둘의 차이점 각각의 대표 알고리즘 예시 Encrypt (암호화) 양방향 암호화 기법 평문을 암호화된 문장으로 만들고, 복호화 기능을 가짐 대칭 암호화 DES(Data Encryption Standard) T-DES ( Triple Data Encryption Standard) AES (Advanced Encryption Standard) 비대칭 암호화 RSA Hash (해시) 임의의 길이 입력을 고정된 길이의 출력으로 바꾸어주고, 복호화가 되지 않아 원문을 알 수 없으나 같은 입력은 같은 출력을 보장 단방향 암호화 기법 MD5 (Message Digest) SHA (Secure Hash Algo..
[Encrypt] 암호화 & 해시 (Encrypt & Hash )기술 면접을 보며 나왔던 질문 중에 암호화 관련된 질문이 있어서 정리를 하게 되었습니다. 암호화, 해시의 개념 둘의 차이점 각각의 대표 알고리즘 예시 Encrypt (암호화) 양방향 암호화 기법 평문을 암호화된 문장으로 만들고, 복호화 기능을 가짐 대칭 암호화 DES(Data Encryption Standard) T-DES ( Triple Data Encryption Standard) AES (Advanced Encryption Standard) 비대칭 암호화 RSA Hash (해시) 임의의 길이 입력을 고정된 길이의 출력으로 바꾸어주고, 복호화가 되지 않아 원문을 알 수 없으나 같은 입력은 같은 출력을 보장 단방향 암호화 기법 MD5 (Message Digest) SHA (Secure Hash Algo..
2022.09.27 -
gradle를 통해 소스를 빌드하기 위해서는 해당 코드에서 사용하는 liberary의 dependencies를 잘 잡아주어야 한다. 보통은 build.gradle에 세팅을 해두고 build를 수행하는데, 특별한 경우에는 어떠한 상황인 경우에만 dependencies를 추가하고 싶은 경우가 있다. 이러한 경우에 어떻게 해야 하는지 알아보도록 하자. 보통의 경우에는 아래와 같이 미리 정의해 둔다. dependencies { compile 'com.google.guava:guava:22.0' testCompile 'junit:junit:4.12' } 다음으로 gradle script에서 dependency를 추가하고 싶은 경우에는 아래와 같이 하면 된다. task example () { project.getD..
[Gradle] Gradle Dependency 추가 ( 동적으로, 프로그래밍을 통해) (dynamically, programmatically)gradle를 통해 소스를 빌드하기 위해서는 해당 코드에서 사용하는 liberary의 dependencies를 잘 잡아주어야 한다. 보통은 build.gradle에 세팅을 해두고 build를 수행하는데, 특별한 경우에는 어떠한 상황인 경우에만 dependencies를 추가하고 싶은 경우가 있다. 이러한 경우에 어떻게 해야 하는지 알아보도록 하자. 보통의 경우에는 아래와 같이 미리 정의해 둔다. dependencies { compile 'com.google.guava:guava:22.0' testCompile 'junit:junit:4.12' } 다음으로 gradle script에서 dependency를 추가하고 싶은 경우에는 아래와 같이 하면 된다. task example () { project.getD..
2022.08.01 -
gradle script를 작성하게 되면, 너무 많은 내용이 담겨서 보기 힘든 경우도 있고, task의 성격별로 category를 하고 싶은 경우가 발생한다. 그러한 경우에 어떠한 방법으로 파일을 분리하고 import 해서 쓸 수 있는지 알아보도록 하자. apply from apply plugin: 'java' apply from: 'other.gradle' 위와 같이 간단하게 다른 gradle script파일을 import 할 수 있다. Gradle User Guide 다른 예제로 gradle user guide에 있는 내용이다. from to를 이용해 특정 변수에 대입을 할 수 있다.
[Gradle] Gradle import other build.gradle 파일gradle script를 작성하게 되면, 너무 많은 내용이 담겨서 보기 힘든 경우도 있고, task의 성격별로 category를 하고 싶은 경우가 발생한다. 그러한 경우에 어떠한 방법으로 파일을 분리하고 import 해서 쓸 수 있는지 알아보도록 하자. apply from apply plugin: 'java' apply from: 'other.gradle' 위와 같이 간단하게 다른 gradle script파일을 import 할 수 있다. Gradle User Guide 다른 예제로 gradle user guide에 있는 내용이다. from to를 이용해 특정 변수에 대입을 할 수 있다.
2022.07.31 -
gradle을 활용하여 다양한 방법으로 build를 할 수 있다. 우선, gradle build를 통해 자바 파일을 빌드하게 되면 default로 프로젝트 하위의 src/main/java 디렉터리의 파일이 target이 되어 빌드된다. 하지만, 내가 원하는 것은 그 폴더 이외의 java파일을 build하는것이다. 이 목적을 달성하기 위해서 sourceSet이라는 gradle에 기능을 찾아보고 발견한 사실을 정리해 보도록 하겠다. 기본으로 제공되는 sourceSet sourceSet 추가 gradle build시 default로 target으로 잡히도록 srcDir 추가 sourceSet 동적으로 추가 gradle build시 default로 target으로 잡히는 srcDir 동적으로 추가 sourceS..
[Gradle] Gradle sourceSetgradle을 활용하여 다양한 방법으로 build를 할 수 있다. 우선, gradle build를 통해 자바 파일을 빌드하게 되면 default로 프로젝트 하위의 src/main/java 디렉터리의 파일이 target이 되어 빌드된다. 하지만, 내가 원하는 것은 그 폴더 이외의 java파일을 build하는것이다. 이 목적을 달성하기 위해서 sourceSet이라는 gradle에 기능을 찾아보고 발견한 사실을 정리해 보도록 하겠다. 기본으로 제공되는 sourceSet sourceSet 추가 gradle build시 default로 target으로 잡히도록 srcDir 추가 sourceSet 동적으로 추가 gradle build시 default로 target으로 잡히는 srcDir 동적으로 추가 sourceS..
2022.07.28