전체 글 13

[Tool] 진단 도구 | 웹 취약점과 소스 취약점

2024-12-31(화) 1. CASE프로젝트가 어느 정도 완성이 되어 전체적으로 취약점은 없는지 프로그램을 이용해서 점검을 했다. 점검하는 과정은 간단했지만 이 프로그램을 사용할 누군가와 언젠가는 다시 사용할 나를 위해 작성해 본다. 2. How to Use1) 프로그램 : 스패로우(SPARROW)2) 사용 가이드*공식 사이트 https://docs.app.sparrowcloud.ai/user-guide.html [ 소스 취약점 ]① SPARROW 로그인 ② 좌측 상단의 [목록] - 새 프로젝트 만들기(점검한 적이 있는 프로젝트라면 해당 프로젝트 경로에서 src 폴더만 추가하면 됨) ③ 프로젝트 키 입력(또는 자동) - 상위 프로젝트 선택 - [추가] ④ [분석 대상]에 src 폴더 경로 추가 - [저..

카테고리 없음 2025.04.03

[SQL] Query | Trigger 이슈가 생기다.

1. CASE문의사항이 하나 들어왔다. 신청 건마다 일자를 클릭하면 어떤 작업을 했는지 시간과 내용 등 로그 이력을 볼 수 있었는데 특정 기간의 신청 건들에서 동일한 날짜로 빈값이 들어있다는 것이었다.확인해 보니, 해당 값은 약 10년 치 데이터에 들어가 있는 상황이었고 생각보다 큰 범위에 적지 않아 당황했다. 원인은 결재를 승인할 시 기본 상태와 더불어 보고서의 상태도 변경이 될 수 있도록 하는 기능을 반영하는 과정에서 이상값이 들어간 걸로 파악되었다.해당 이상값은 가비지 데이터로 판명이 되어 삭제하는 걸로 일단락이 되었지만 대체 어떤 것때문에 이런 일이 나타난 건지 궁금했고, 어떤 조치를 취할 수 있을까 생각해 봤다. 2. Find the Cause + Solution상태를 변경할 때 사용되는 테이블..

카테고리 없음 2025.03.28

[DBMS] Oracle | Query 튜닝

1. CASE등록한 일정을 변경해야 할 경우 ‘일정 변경 요청’을 하는데 이때 일정 변경 전후도 함께 보여줘야 했다. 어느 날 문제가 생겼다고 연락이 왔는데 일정 변경 후의 데이터가 뜨지 않는다는 것이었다.기존에는 일정 변경 전과 후의 데이터를 각각 임시 테이블에 INSERT 후 보여주는 방식이었다. 원인은 하루에 중복된 일정이 들어갈 시 고유 제약 조건을 위배하는 문제가 생기는 것이었다.전후 데이터를 보여주기만 하면 되었기 때문에 임시 테이블을 사용하지 않아도 될 것 같아 쿼리 리팩토링을 하기로 결정하였다. 2. How to Use1) 리팩토링 전① TR_1, TR_2 데이터 삭제 ② TR_1 인서트 : source(원본 자료) target(대상 자료) ③ TR_2 인서트 : source(원본 자료)④..

카테고리 없음 2025.03.23

[JAVA] 기능 구현 | 결재

2024-10-10(목) 1. CASE결재 올리는 방식을 변경해야 했다. 이유는 각기 운영되고 있는 프로그램들이 하나의 결재 시스템을 사용하다 보니, 결재를 승인하는 부분에 있어 난립이 일어난다는 것이었다. 그래서 결재 승인 방식을 통합하여 사용 및 관리의 편의성을 높이기로 했다. 사전 설정 및 기본 구조와 함께 개발 가이드라인이 제공되었기 때문에 프로젝트의 환경에 맞게 개발하면 되는 상황이었다. 2. How to Use [ 결재 관련 파일 ]1) 결재.java- 결재 주 컨트롤러- 결재 전 처리 / 결재 후 처리 / 결재 후 화면 처리 2) 승인 PDF.java- PDF 생성 세팅 메소드 3) PDF 생성.java- 상신 PDF 양식 템플릿 호출 4) 승인 Func.java- 파일 다운로드 처리 5) ..

카테고리 없음 2025.03.18

[SQL] Synonym | DB 이관하기 (2)

2024-07-03(수) 2 1. CASE이어서 DB를 이관하는 과정에서 한 가지 문제사항이 생겼다. 전체 계정을 관리하는 최상위 계정인 A계정, 이관 전의 계정을 B계정 그리고 이관 후의 계정을 C계정이라고 하겠다. 이관하는 계정인 C계정은 아예 새로 만들어야 되는 건 아니었고, 기존에 사용했던 적이 있던 계정이었다. 문제는 이관한 C계정에서 특정 테이블(*USER1.TABLENM)이 조회되지 않았고, 원인은 USER1이 아닌 USER2를 참조하고 있었다. 즉, 다른 데이터베이의 객체를 참조하고 있는 것이었다. 대신에 조회하는 테이블명은 동일했기 때문에 B계정과 C계정의 데이터를 비교해 본 결과, 데이터도 동일하다고 판단했다. 결국에는 C계정에서 USER2로 참조하고 있었던 걸 모두 USER1으로 바꿔..

카테고리 없음 2025.03.12

[DBMS] Toad | DB 이관하기 (1)

2024-07-03(수) 1 1. CASE나눠져 있던 프로젝트가 합쳐지면서 DB를 이관해야 하는 일이 생겼다. 나는 DB 개발 툴로 Toad라는 프로그램을 사용했는데, 처음 사용해 봤기도 했고 어떻게 데이터를 옮겨야 할지 막막했다. 다행히도 상사분들이 도와주셔서 무사히 옮길 수 있었는데 이 프로그램을 쓰는 누군가에게 도움이 되길 바라며, 데이터를 추출하고 삽입하는 방법을 소개하겠다. 2. How to Use1) Excel (대용량)[ Export ]① 해당 테이블에서 우클릭 - Export Dataset ② Format : Excel File [ Import ]① 메뉴 - Database - Import - Import Table Data (새로운 테이블 만들 시) ② Object Name : ...클릭..

카테고리 없음 2025.03.06

[JAVA] API | 카카오톡 알림톡

2024-04-01(월)https://kakaobusiness.gitbook.io/main/ad/bizmessage/notice-friend 1. CASE평가자를 배정하면 배정된 평가자에게 카카오톡 알림톡을 보내는 기능을 만들어야 했다. 2. How to Use1) 세팅*카카오톡 알림톡 신청 절차*참고 ) https://blog.naver.com/apistore/222130124352 3. Used Code (보안상 코드를 각색함)*공식 사이트 ) https://kakaobusiness.gitbook.io/main/ad/bizmessagehttps://docs.kakaoi.ai/kakao_i_connect_message/bizmessage/api/api_reference/at/ 1) 화면단 코드funct..

카테고리 없음 2025.03.03

[Secure Coding] JSTL <c:out> | JSP EL

2024-01-10(수) *참고 ) https://diqmwl-programming.tistory.com/841. CASE 어느 정도 사업이 끝나갈 무렵, 프로젝트의 소스 취약점을 검사해야 했다. 와 같은 식을 와 같은 식인 c:out 태그로 감싼 형식으로 수정해야 했다. c:out 태그는 JSTL라는 건 알고 있었지만 순간 EL과 혼동되기 시작했다. 그래서 해당 작업이 끝나고 개념을 정리해야겠다고 생각했다. 2. How to Use - About Xss 1) JSP (Java Server Pages) JSP는 HTML 안에 Java 코드를 삽입하여 동적인 웹 페이지를 생성하는 기술이다. ① 특징 - Java 코드를 HTML에 포함할 수 있다. (로 표현) - 데이터 처리와 화면 렌더링을 함께 구현 가능..

카테고리 없음 2025.02.11

[JS library] simplecaptcha.js | 자동 등록 방지 문자

2023-10-20(금) *참고) https://devchul.tistory.com/181. CASE 회원가입 시 자동 등록 방지 기능을 넣어야 했다. simplecaptcha라는 라이브러리를 사용하여 구현하기로 했다. 2. How to Use 0) 들어가기 전, CAPTCHA란? 웹사이트에서 사람이 접근하려고 하는 것인지 봇이 접근하는 것인지 판단하기 위하여 사용되는 테스트를 뜻한다. 1) 기본 세팅 ① 공식 사이트(http://simplecaptcha.sourceforge.net/)에서 jar 파일을 다운로드 한다.  (여기서는 Java 6 버전을 다운로드했다!) ② 다운로드 한 jar 파일을 라이브러리에 Build Path를 한다. 2) Java 세팅 ① /* Controller.java */캡챠 ..

카테고리 없음 2025.02.09

[Database] Oracle | MERGE INTO (2) (DB 부하 이슈를 해결하다)

1-2. Cause DB 부하의 원인을 찾기 위해 좀 더 쿼리를 들여다봤다. 단순히 데이터를 JOIN 하여 조회하는 정도로만 알았던 나는, 조회를 위해서는 '일련의 프로세스'가 있다는 사실을 깨달았다. 기존 테이블에 있는 데이터를 작업 테이블로 옮기는 게 주목적이었다. 자료 매칭을 위해 총 3개의 테이블(임시, 기존, 작업)이 사용되고, 작업 테이블에 이미 매칭된 데이터가 들어가 있으면 중복된 데이터이기 때문에 INSERT가 제대로 안 된다. 그래서 기존 테이블에 있는 데이터를 DELETE 해야 한다. 임시 테이블 → 기존 테이블 : 임시 테이블에 있는 데이터를 DELETE 하고, 기존 테이블로 데이터를 INSERT 기존 테이블 → 작업 테이블 : 기존 테이블에 있는 데이터를 MERGE INTO 하여,..

카테고리 없음 2025.02.07