본문 바로가기

HTML

SQL Injection 취약점 개선 📌 SQL Injection 취약점 개선 외 조치 정리 (보안 개선 사례)1. SQL Injection 취약점 개선🔴 문제MyBatis에서 ${} 사용으로 사용자 입력이 SQL에 직접 삽입됨AND B.MBER_NM LIKE '%${searchKeyword}%'AND B.HNF_NO_TMP IN (${hnfNoTmp}) 🟢 개선#{} 바인딩으로 PreparedStatement 적용IN 절은 로 안전하게 처리AND B.MBER_NM LIKE CONCAT('%', #{searchKeyword}, '%')AND B.HNF_NO_TMP IN #{item} 💡 핵심 포인트${} → 문자열 치환 (취약)#{} → 바인드 변수 (안전)2. LIKE / REGEXP 검색 시 보안 처리🔴 문제와일드카드 및 정규식.. 더보기
Google Search Console 크롤링 범위 정리 Google Search Console 크롤링 범위 정리1. 문제 상황웹페이지 SEO 분석을 위해 Google Search Console이 HTML의 어떤 데이터를 수집하는지 확인할 필요가 있었다.특히 다음 두 가지에 대한 궁금증이 있었다.Google이 태그만 수집하는지아니면 태그의 실제 콘텐츠까지 크롤링하는지2. Google 검색 크롤링 구조(1) 영역에서 수집하는 정보Google은 페이지의 메타데이터와 검색 결과에 직접 영향을 주는 정보를 수집한다.대표적인 메타 태그: 주요 수집 데이터title : 검색 결과 제목description : 검색 결과 설명robots : 색인 여부charset, viewport : 페이지 설정 정보즉, 검색 결과에 표시될 메타정보는 대부분 에서 가져온다.(2) 영.. 더보기
JSP EL vs <c:out> 차이 및 XSS 대응 정리 JSP EL vs 차이 및 XSS 대응 정리1️⃣ 문제 배경JSP 화면 개발 중 게시글 제목을 출력할 때 아래 두 가지 방식이 혼용되고 있었다. ${article.articleTitle} value="${article.articleTitle}"/> 겉보기에는 동일하게 동작하지만, 보안 및 출력 처리 방식에서 중요한 차이가 존재한다.2️⃣ 기술적 차이 분석🔹 1. EL(Expression Language) 직접 출력 ${article.articleTitle} 단순히 객체의 프로퍼티 값을 출력null일 경우 아무것도 출력하지 않음HTML escape 처리 없음사용자 입력값 포함 시 XSS 취약 가능성 존재예시: 위 값이 DB에 저장되어 있다면 브라우저에서 그대로 실행될 수 있음.🔹 2. JSTL .. 더보기
JSP에서 특정 URL 포함 여부에 따른 조건 분기 처리 📌 JSP에서 특정 URL 포함 여부에 따른 조건 분기 처리1️⃣ 문제 상황Spring MVC + JSP 환경에서basePath라는 변수에 다음과 같은 값이 들어있다고 가정한다./pblc/front/list.do 특정 조건:beffatInfoPblcCd 값이 존재하고basePath에 /list.do가 포함되어 있을 때만특정 블록을 실행하고 싶었다.2️⃣ 잘못 접근하기 쉬운 방식많이 하는 실수:JSTL fn:contains()를 새로 도입또는 복잡한 조건문 작성하지만 기존 코드 스타일을 유지하면서,JSTL 함수 추가 없이 해결하고 싶었다.3️⃣ 해결 방법 (EL의 indexOf() 활용)EL에서도 Java의 String#indexOf() 메서드를 사용할 수 있다. -1}"> 4️⃣ 핵심 로직 설명조건.. 더보기
JSP 분리 구조에서 선택된 카테고리를 <title>에 동적으로 반영하기 📌 JSP 분리 구조에서 선택된 카테고리를 에 동적으로 반영하기1️⃣ 문제 상황head.jsp와 body.jsp가 분리된 구조카테고리 탭은 body.jsp에 존재은 head.jsp에서 관리선택된 카테고리명을 에 동적으로 반영해야 하는 요구사항 발생searchCl1 파라미터는 기존 로직상 변경 불가⚠️ 제약 조건JavaScript 수정 없이 처리컨트롤러 로직 변경 최소화기존 searchCl1 유지JSTL 기반 처리2️⃣ 해결 전략핵심은 다음과 같습니다.✔ 이미 서버에서 내려오는 searchCl1 값을 기준으로✔ 카테고리 리스트(beffatInfoPblcCd)를 순회하면서✔ 일치하는 카테고리명을 에 출력즉, 추가 상태 관리 없이 서버 파라미터 기반 렌더링 방식 유지3️⃣ 구현 방식📍 1. 동적 처리 (.. 더보기
js06_BOM /* 브라우저 객체모델(Browser Object Model) BOM은 웹브라우저와 관련된 객체의 집합객체를 의미한다. BOM은 window > screen, location, navigator, history, document가 있다. 간단하게 문서객체모델(DOM, Document Object Model)이라 통합해서 부르기도 한다. */ document.write(typeof window + '='+ window, ' '); for(let key in window){ document.write(`${key} = ${window[key]} `); } window.alert('경고창함수는 window객체의 매서드 중 하나이다'); /* window 객체는 브라우저 기반의 모델에서 최상위 객체이다. ale.. 더보기
js04_function /* 함수(function)란? 1. 함수는 기본적으로 호출된 곳으로 처리결과를 전달해주는 기능을 한다. 2. 함수의 호출은 '함수명()'의 형태로 호출한다. 3. 함수의 소괄호 안에는 함수로 임의의 값을 전달하는 매개변수(매개값, 인자, 파라미터...)가 있을 수도 있고 없을 수도 있다. 4. 사용자함수의 정의방법 1) 익명함수 : 이름이 없는 함수 : function() {...} 2) 선언함수 : 이름이 있는 함수 : function 함수명(매개변수...) {...} 내장함수와 사용자(정의)함수 1. 내장함수 : JavaScript에서 기본적으로 제공해 주는 함수를 내장함수라 한다. 예) alter, prompt, confirm... 2. 사용자 정의함수 1) 익명함수 2) 선언함수 */ //익명함.. 더보기