본문 바로가기

전체 글

(7)
[MySQL] UPSERT, INSERT ON DUPLICATE UPDATE 등록 또는 수정 INSERT ON DUPLICATE KEY UPDATE 사용 업무를 하며 INSERT 또는 UPDATE를 하기 위해 DUPLICATE KEY UPDATE를 사용한다. 오라클 DB를 사용할 때는 MERGE INTO를 사용했는데 그 유사한 기능이라고 생각하면 되겠다. PRIMARY KEY 중복이 발생하게 되면 UPDATE를 실행하게 되고 중복 된 PRIMARY KEY가 없을 경우에는 INSERT 하게 된다. 예시 1 INSERT INTO A_TABLE (A,B,C) VALUES (1,2,3) ON DUPLICATE KEY UPDATE C = C+1; /* UPDATE시 아래와 유사한 동작을 한다 */ UPDATE A_TABLE SET C=C+1 WHERE A=1; 예시 2 - Aliases 사용 INSERT..
[MySQL] REPLACE INTO, DELETE INSERT 대체 REPLACE INTO REPLACE INTO는 기존에 등록된 ROW 데이터를 REPLACE에 해당하는 데이터로 대체하기 위해 사용한다. 이때 그 기준은 PK값을 기준으로 하게 된다. 만약 PK에 해당하는 ROW가 없다면 INSERT와 동일하게 동작 한다. REPLACE INTO를 하기 위해서는 대상 테이블에 INSERT, DELETE 권한을 필요로 한다. 예시1 (PK - ID) REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); REPLACE INTO test VALUES (1, 'New', '2014-08-20 18:47:42'); SELECT * FROM test; +----+------+---------------------+ | id | ..
[Spring] XSS(Cross-site scripting) JSON 데이터 XSS 처리 하기 [Spring] XSS(Cross-site scripting) 사이트 간 스크립팅 취약점 대응 XSS(Cross-site scripting)? 사이트 간 스크립팅, 크로스 사이트 스크립팅(Cross-site scripting)은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크 shinechan.tistory.com 지난 포스팅에서 lucy를 활용한 XSS처리를 등록 했었는데 알고보니 lucy 라이브러리는 form-data에 대해서만 적용되고 JSON에 대해서는 처리해주지 않고 있었다. 그래서 RequestBody로 넘어오는 JSON에 대한 필터를 등록하여 처리하는 방법을 작성 한다. JSON데이터 XSS 처리 적용 pom.xml org.apache.c..
[Spring] XSS(Cross-site scripting) 사이트 간 스크립팅 취약점 대응 XSS(Cross-site scripting)? 사이트 간 스크립팅, 크로스 사이트 스크립팅(Cross-site scripting)은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. 이름이 CSS가 아닌 이유는 웹 기술인 CSS와 헷갈릴 수 있어서다. 주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다. 이 취약점은 웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지 않고 사용할 경우 나타난다. 이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 할 수 있다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하므로..
[Spring] Spring Framework와 Spring Boot의 차이점 Spring의 유래 Spring은 Java를 통해 앱을 제작할 때 간소화된 모듈식 접근 방식을 제공하는 오픈 소스 프로젝트입니다. Spring은 초기 Java 개발의 복잡성에 대한 반발로 2003년에 시작되었으며 Java 앱 개발을 지원합니다. Spring이라는 이름이 혼자 사용되면 일반적으로 애플리케이션 프레임워크 자체나 전체 제품 또는 모듈 그룹을 가리킵니다. Spring Boot는 Spring Framework를 확장해 빌드된 특정 모듈입니다. Spring 프레임워크, Spring Boot, Java가 한꺼번에 작동하는 방식에 대한 배경을 살펴보면 Spring Boot의 정의가 보입니다. Java 프레임워크에서 웹 앱과 마이크로 서비스 개발을 간소화하고 가속화하기 위한 도구가 Spring입니다. 스..
[MySQL] TEMPORARY TABLE 사용하기 #2 (BULK INSERT) [MySQL] TEMPORARY TABLE 사용하기 #1 시작하기 전... 엑셀 업로드 후 저장시 대량으로 DB에 업로드 해야 할 일이 생겼다. 그래서 MySQL의 TEMPORARY TABLE 을 이용해 일괄 등록 후 TEMPORARY TABLE에 등록된 데이터로 정합성 체크 까지 하는 로직 shinechan.tistory.com 앞에서(위 링크 참조) TEMPORARY TABLE 생성과 삭제하는 구문에 대해 작성했는데 이어서 생성한 TEMPORARY TABLE을 사용하여 다량의 데이터를 INSERT 하고 실제 사용 테이블에 INSERT 하기 전 데이터의 정합성 체크까지 하는 예제를 작성하겠다. 그리고 BULK INSERT를 MyBatis에서 사용하는 부분도 함께 작성 BULK INSERT를 하는 이유?..
[MySQL] TEMPORARY TABLE 사용하기 #1 시작하기 전... 엑셀 업로드 후 저장 시 대량으로 DB에 업로드해야 할 일이 생겼다. 그래서 MySQL의 TEMPORARY TABLE 을 이용해 일괄 등록 후 TEMPORARY TABLE에 등록된 데이터로 정합성 체크까지 하는 로직을 개발하기로 했다. MySQL TEMPORARY TABLE 이란? MySQL에서 임시 테이블은 단일 세션에서 여러 번 재사용할 수 있는 임시 결과 집합을 저장할 수 있는 특별한 유형의 테이블입니다. MySQL은 세션이 종료되거나 연결이 종료되면 자동으로 임시 테이블을 제거 합니다. 물론 DROP TABLE을 사용하여 임시 테이블을 더 이상 사용하지 않을 때 이 명령문을 사용하여 명시적으로 임시 테이블을 제거할 수 있습니다. TEMPORARY TABLE 생성 & 삭제 예시 C..