본문 바로가기

전체 글131

실무 다른 동료 SQL문 분석 1. SELECT TAG.IDX, TAG.DEPTH_TYPE, TAG.DEPTH1_IDX, TAG.DEPTH2_IDX, TAG.ITEM_ORDER, TAG.TAG_NAME_KOR, TAG.TAG_NAME_ENG, TAG.IS_SHOW, COUNT(EXHIBIT_TAG.IDX) AS CONNECTED_ITEM_COUNT, TAG.REG_DTTM FROM .. 2024. 7. 11.
MySql의 암호화,복호화 처음에는 이메일도 자바에서 암호화,복호화 제공하는 AES256Cipher라는거를 이용했는데 데이터 검색시 검색어에 포함된 문자를 가져와야해서  자바에서 제공하는  먼저 암호화는 AES_ENCRYPT() 함수를 이용하고,복호화는 AED_DECRYPT() 함수를 이용한다. 프로젝트에서 관리자 테이블에 이메일은 암호화로 저장한다했고, 이제 관리자 메인 페이지에서 이렇게 구분 검색 [전체,이메일,이름] 선택이 있는데 예를들어 전체 선택하고 "ing" 을 하고 검색시  이메일,이름 필드 둘다 "ing"을  포함하는 문자 데이터 있는지 검색해야한다.그러나 이메일은 암호화 상태로 저장중이니 복호화 하고 "ing"을 포함하는 문자 데이터 있는지 검색해야한다. 테이블에 이메일필드 데이터 타입은 VARCHAR()인데 암호.. 2024. 7. 4.
결합도와 응집도 결합도와 응집도는 소프트웨어 설계에서 중요한 개념으로, 코드의 유지보수성과 재사용성을 높이는 데 중요한 역할을 합니다. 두 개념을 쉽게 설명하면 다음과 같습니다:결합도 (Coupling)결합도는 하나의 모듈(또는 클래스)이 다른 모듈과 얼마나 밀접하게 연결되어 있는지를 나타냅니다. 결합도가 높을수록 모듈 간의 의존성이 커지고, 결합도가 낮을수록 모듈 간의 의존성이 적습니다.높은 결합도: 한 모듈이 다른 모듈에 강하게 의존하고 있어서, 한 모듈에 변경이 발생하면 이를 사용하는 다른 모듈에도 변경이 필요하게 되는 상황입니다.예시: 클래스 A가 클래스 B의 내부 구현에 의존하여, B의 코드가 변경되면 A도 함께 변경되어야 합니다.단점: 유지보수가 어려워지고, 재사용성이 낮아집니다.낮은 결합도: 모듈 간의 의존.. 2024. 6. 25.
XSS 공격 방지용 XssFilter XssFilter filter = XssFilter.getInstance("lucy-xss-superset.xml");AdminSearchVo asvo = new AdminSearchVo(); if(StringUtils.isNotBlank(search_type)){ asvo.setSearch_type(filter.doFilter(search_type)); } if(StringUtils.isNotBlank(search_text)){ asvo.setSearch_text(search_text); } 프로젝트에서 쿼리파라미터로 받은 DB 검색 조건들 (ex: 제목,시작 날짜,종료날짜)을 AdminSearchVo의 필드에 넣고 이제 DB에 요청할때 검색 조건 넣은 AdminSearchVo를 같이 넘.. 2024. 6. 25.
Json 코드 해석 1. 객체를 JSON형식으로 변환 (직렬화)단계별 설명TokenBuffer buffer = new TokenBuffer(null);:TokenBuffer는 Jackson에서 제공하는 클래스입니다. JSON 내용을 메모리에 저장할 수 있는 버퍼 역할을 합니다. 이 버퍼는 일종의 중간 저장소로 사용됩니다.ObjectMapper objectMapper = new ObjectMapper();:Jackson의 핵심 클래스 중 하나인 ObjectMapper를 생성합니다. 이 객체는 Java 객체와 JSON 간의 변환 작업을 수행합니다.objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);:ObjectMapper의 직렬화 설정을 변경하여 n.. 2024. 6. 25.
JSP의 코드 해석 1.$(location).attr('href', url); 현재 페이지를 지정된 URL로 리디렉션 시키는 것입니다. 이로 인해 브라우저는 지정된 URL로 GET 요청을 하게 됩니다. 2.colNames: ['No.', '이메일','이름','권한','상태','등록일','비고'],colModel: [ {name: 'idx', index: 'idx', editable: true, width: 40, sorttype: "int", search: true, align: "center"}, { name: 'email', index: 'email', editable: true, sortable: true, align: "center", }, {.. 2024. 6. 24.