본문 바로가기
반응형

웹개발65

자바단(서비스단)에서 직접 특정 웹사이트 URL호출 하기 출처사이트 : https://nine01223.tistory.com/m/256 HttpURLConnection을 이용해서 POST 호출을 하려면 다소 복잡한 과정이 필요하다. 하지만 다음과 같은 심플한 과정을 통해서(정형화된 과정을 통해) 쉽게 호출할 수 있다! 자주 사용하는 코드이므로 유용하게 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 import java.io.*; import java.net.*; import java.util.*; class Test { public static void main(String[] args) throw.. 2022. 2. 17.
webSocket 웹 채팅 만들기 출처사이트 : https://devmg.tistory.com/m/127 File > New > Spring Lagacy Project > Templates목록에서 맨 아레 Spring MVC Project 클릭 하고 생성 ※만약에 Spring Lagacy Project가 보이지 않는다면 마켓플레이스에서 STS를 입력후 STS3 Add-On 설치한다. org.springframework spring-websocket ${org.springframework-version} javax.websocket javax.websocket-api 1.1 기본 pom.xml에 2개의 의존성을 추가한다. 위 대로 디폴트 스프링mvc프로젝트를 생성하면 버전이 낮다. 그래서 웹소켓 인터페이스를 지원하는데 오류가 많이 났다 (.. 2022. 2. 17.
WebtoB 에서 TLSv1.2 지원 확인하는 방법 출처사이트 : https://sarc.io/index.php/was/2026-webtob-tlsv1-2 1. 개요 2020년 상반기, 주요 브라우저의 TLSv1.2 미만 지원 종료 건 관련하여 많은 웹시스템들의 Openssl 버전 업그레이드 및 WEB서버의 업그레이드 등이 이루어지고 있는데요, Openssl을 사용하지 않는 WebtoB의 경우에는 WBSSL 이라는 모듈을 사용하기 때문에 WebtoB만 업그레이드 해주면 됩니다. WebtoB 몇 버전부터 TLSv1.2 프로토콜을 지원하는지와 TLSv1.2로만 통신하도록 설정하고 확인하는 방법에 대해 알아보겠습니다. :) 2. TLSv1.2 프로토콜 지원하는 WebtoB 버전 WebtoB 4.1.5.3 버전부터 TLSv1.2 프로토콜을 지원하기 시작했습니다... 2022. 2. 17.
xss 방지 Lucy-xss-servlet-filter 적용하기 웹 개발을 할 때 보안은 중요한 요소입니다. 오늘 포스팅할 내용은 웹 취약점 공격 방법의 일종 중 하나인 XSS를 방어하는 방법에 관한 것입니다. 테스트 환경 JDK 1.8 Spring 4.3.14 Tomcat 9.0 XSS(Cross Site Scripting) XSS는 웹 어플리케이션에 악의적으로 스크립트를 삽입해 공격하는 기법을 말한다. 만약 웹 어플리케이션에서 데이터를 서버로 저장할 때(게시판에 글을 쓴다던지. 회원 정보를 수정한다던지) 데이터를 검증하지 않거나 XSS에 대한 방어 대비가 없다면 스크립트가 포함된 데이터가 저장되어 유저로 하여금 원치 않는 스크립트를 실행시킬 수 있다. 이러한 방식의 위험성은 일반적으로 자바스크립트에서 발생하지만 VB 스크립트, Active X등과 같은 동적 데이터.. 2022. 2. 17.
xss 방지 출처사이트 : https://developer111.tistory.com/40 xss(croos site script)란?? 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취한다. XSS 공격 보안 방법 XSS 공격을 보안하려면 세가지 상황에 대해 모두 보안을 해주셔야 합니다. 첫번째, 또는 과 같은 html 태그에 스크립트 공격이 들어오는 경우 두번째, 태그에 스크립트 공격이 들어오는 경우 세번째, json 형식의 데이터 전송에 스크립트 공격을 하는 경우 네번째, 웹소켓에서 스크립트 공격이 들어오는 경우 첫번째와 두번째 상황은 방어하.. 2022. 2. 17.
암호와 종류 (양방향 / 단방향) 출처사이트 : https://galid1.tistory.com/339 단방향 암호화와 양방향 암호화 1. 단방향 암호화 - 평문을 암호문으로 암호화 하는것은 가능하지만 암호문을 평문으로 복호화하는 것은 불가능한 암호화 방법 이러한 암호화 방식이 필요가 없다고 생각할 수 있지만 복호화가 필요없는 경우의 암호화 방식이 더 유용한 경우가 있다 이러한 경우가 바로 "패스워드"이다 패스워드를 단방향 암호화 방식으로 저장하는 경우 패스워드DB가 털릴 경우에도 안전할 수 있다 또 패스워드를 검증할 때에는 사용자로부터 입력받은 암호를 똑같은 방식으로 암호화 하여 암호화된 패스워드 끼리 비교를하면 되기 때문이다 단방향 암호화 종류 - 암호학적 해시 함수가 이에 해당한다 1) MD5 - 현재는 안전하지 않으므로 사용하지 .. 2022. 2. 17.
log4j 파일별 특정 로그 제외하거나 특정 데이터만 쌓는 방법 출처사이트 : https://lemontia.tistory.com/440 log4j.xml 파일에 다음의 항목을 추가한다. 빨간색으로 그은 부분이 그것인데, 이렇게 설정해두면 Mapper에다 ==IGNORE_LOG== 를 넣으면 해당 쿼리에 대한 로그를 출력하지 않는다. 사용예) /* 테스트 ==IGNORE_LOG== */ select t1, t2 from test; 2022. 2. 17.
스프링 properties 읽어오기 추출사이트 : https://ktko.tistory.com/m/entry/Spring-properties-%EC%9D%BD%EC%96%B4%EC%98%A4%EA%B8%B0 properties 읽어오기(3가지) 1) PropertyPlaceholderConfigurer를 이용한 properties 파일 읽어오기 2) context:property-placeholder를 이용한 properties 파일 읽어오기 3) 와 Spring EL을 이용한 properties 파일 읽어오기 1) PropertyPlaceholderConfigurer를 이용한 properties 파일 읽어오기 프로퍼티를 읽어오기 위해 간단한 선행 작업으로 /WEB-INF안에 config 폴더를 생성 후 안에 config.prpoertie.. 2022. 2. 17.
HttpSessionListener 이용 중복 로그인 방지 추가 사이트 : https://lts0606.tistory.com/m/320 스프링 시큐리티를 사용하지 않고 단순히 세션값을 활용하여 중복 로그인을 방지하는 방법에 HttpSessionListener 인터페이스가 사용이 된다. 해당 인터페이스를 implements하면 세션이 생성되고 소멸되는 시점에 대해서 작업을 용이하게 할 수 있다. HttpSessionListener 인터페이스를 상속받아보면, 2개의 메소드가 오버라이딩 된다. 생성용 Created메소드, 소멸용 Destroyed 메소드 그러면 머리를 조금만써서.. 특정 기능에서 로그인 성공시 세션을 만들어주고나면 해당 세션을 특정값에 보관하고, 로그아웃이나 중복로그인 발생시 저장된 세션값을 제거해주도록 하면 될 것 같다. 첫번째로 위 HttpSess.. 2022. 2. 17.
스프링 세션 동작 원리 출처사이트 : https://thecodinglog.github.io/spring-session/2020/08/07/filter-chain.html Spring-Session을 사용하면 외부 저장 매체(mysql, Redis 등)를 이용해서 여러 서버의 Session을 쉽게 동기화 할 수 있습니다. 실제로 Session 동기화 기능이 있는 컨테이너를 사용하려면 막대한 비용이 들기도 하고 구성하기가 쉽지도 않습니다. 특정 컨테이너 기술에 의존하게 되는 것도 문제입니다. Tomcat 2개로 서비스를 운영하다가 제우스에 서비스를 추가로 올려서 사용할 수 없다는 의미입니다. Spring-Session의 또 다른 이점은 한 화면에서 여러 Session 쉽게 구성할 수 있도록 해줍니다. G-Mail 서비스를 보면 .. 2022. 2. 17.
세션 생성 및 제거. 출처 : https://devkingdom.tistory.com/m/9 간단하게 설명을 해보자면, ① 서버에 연결하고 서비스를 요청한다. 편하게 로그인 서비스라고 생각하자. ② 로그인 기능을 수행하는 메서드가 있으면 메서드 바디에서 setAttribute() 메서드를 호출한다. ③ 그러고 나면 해당 속성값이 Session 안에다가 저장이 된다. ④ 그 후 결과를 응답해준다. 이러면 로그인이 완료된거다. ⑤ 로그인 하고 난 뒤에 유저 수정 화면에 들어간다고 생각해보자. 유저 수정 서비스를 호출한다. ⑥ 수정 기능을 수행하는 메서드가 있으면 메서드 바디에서 getAttribute() 메서드를 호출한다. ⑦ 그러고 나면 해당 속성 값이 반환된다. ⑧ 이 값을 클라이언트에게 응답해주면 유저의 정보가 화면에 보여.. 2022. 2. 17.
JavaScript 키보드 이벤트 생성 출처 : https://itinerant.tistory.com/m/69 [JavaScript] 키보드 이벤트 ( 단축키/hotkey ) 생성하는 방법 ex) `Ctrl + Alt + c` 을 눌렀을 때 이벤트 생성 var isCtrl, isAlt; // ctrl. Alt 눌림 여부 확인 document.onkeyup = function(e) { if (e.which == 17) isCtrl = false; if (e.which == 18) isAlt = false; } document.onkeydown = function(e) { if (e.which == 17) isCtrl = true; if (e.which == 18) isAlt = true; console.log(e.which , isCtrl, i.. 2022. 2. 17.
jQuery 노드를 생성/추가/이동/삭제 하기 출처: https://ktko.tistory.com/entry/jQuery-노드를-생성추가삭제이동-하기 [KTKO 개발 블로그와 여행 일기] 설명을 위한 예제로 ul과 li태그를 사용하여 HTML 코드를 작성하였습니다. 실제 개발할 때는 ul, li태그뿐만아니라 다른 부분에서도 노드를 추가 생성할 수 있겠지만 간단한 설명을 위해 ul, li로 정리하겠습니다. 1 2 3 4 5 6 7 menu1 menu2 menu3 menu4 menu5 아래는 오늘 포스팅한 메서드의 간략 설명입니다. 분류 내용 jQuery DOM 핵심 프로퍼티 및 메서드 노드 생성 / 추가 노드 생성 $("DOM 문자열"); 첫 번째 자식 노드로 추가 $부모노드.prepend($추가노드) $추가노드.prependTo($부모노드) 마지막 .. 2022. 2. 17.
jquery each .prop .attr .css .val등 주요 함수 원본사이트 : https://bvc12.tistory.com/332 - each (배열) 자바스크립트의 for 문과 동일한 기능을 갖고 있습니다. 즉 반복문의 기능을 수행합니다. 제이쿼리 반복문인 each 는 2가지의 사용법을 지원합니다. 사용법은 다음과 같습니다. 사용방법 및 문법 $.each(object, function(index, item){ }); 또는 $(selector).each(function(index, item){ }) object : 객체 index : 반복문 횟수 item : 반복문에서 나온 값 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 3.. 2022. 2. 17.
Javascript에서 DOM의 특정 요소(element) 찾는 방법 출처사이트 : https://jhmocu.tistory.com/m/102 자바스크립트 요소(Element) 찾기 * JavaScript를 사용해서 HTML element를 찾는 방법: 1. getElementById('id') 2. getElementsByTagName('tagName') 3. getElemnetsByClassName('class.. jhmocu.tistory.com * JavaScript를 사용해서 HTML element를 찾는 방법: 1. getElementById('id') 2. getElementsByTagName('tagName') 3. getElemnetsByClassName('className') 4. CSS 선택자: querySelectorAll('선택자'), querySe.. 2022. 2. 17.
페이지 이동시키는 방법(forward, redirect 차이) 출처사이트 : https://maribel.tistory.com/m/40 1. response 객체 response.sendRedirect("이동할_페이지명"); ex) response.sendRedirect("http://www.daum.net"); //외부 사이트로 이동 ex) response.sendRedirect("./req.jsp"); //내부 파일의 상대경로를 지정하여 이동 URL창이 이동할 페이지로 전환되면서 이동 데이터를 서로 공유할 수 없음 2. forward 액션태그 외부 사이트로 이동 안됨 자기 프로젝트의 다른 페이지로만 이동 가능 URL창이 이동할 페이지로 전환되지 않음 데이터를 공유하면서 페이지 이동 가능 3. 자바스크립트 location.href="이동할_페이지명" locatio.. 2022. 2. 17.
JSP 페이지 이동 4가지 방법 및 특성 출처사이트 : https://devyongsik.tistory.com/m/93 JSP에서는 페이지 이동시 다음 4가지 정도의 방법이 있습니다 ① JavaScript를 이용 window.open, location.href, location.replace 등을 이용할수 있습니다 login_process.jsp 특징적인부분은 브라우져의 주소창이 변경되며 (이말은 즉슨 클라이언트가 다시 admin.jsp를 서버에 요청한다는 말입니다) login_process.jsp 에서 jsp가 다 실행되고 브라우져에 out put된 html 및 javascript들만으로 실행된 코드들이라는 것입니다 ② response.sendRedirect를 이용 login_process.jsp 이 코드에서 a가 출력될까요 안될까요? 출력 .. 2022. 2. 17.
파일 업로드/다운로드구현 multipart 출처사이트 https://velog.io/@eesiwoo/Spring-%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C%EC%99%80-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C 시작 전 환경잡기 1.porm.xml에 dependency 추가하기 commons-fileupload commons-fileupload 1.4 2. servlet-context.xml에 bean 추가하기 3. web.xml 설정하기 용량은 10mb까지 가능하다. multipart를 처리하기 위해 꼭!! 설정해야한다. 나는 용량제한만 하는줄 알고 안했다가.. 한참고생했다.. 104857600 104857600 0 업로드 / 다운로드 구현하기 1. 업로드 Controller .. 2022. 2. 17.
jsp태그 및 <% 사용해서 개발하기 출처사이트 : https://codevang.tistory.com/197 [ JSP 태그 ] HTML 기반의 JSP 코드 내에 JAVA 코드를 삽입할 수 있게 해주는 태그 JSP는 HTML 기반으로 되어 있기 때문에 JAVA 코드를 넣어서 동작시키려면 JSP 태그 사이에 삽입해야 합니다. HTML, CSS, Javascript 등으로 클라이언트단에서 보여지고 동작할 뼈대를 만든 후 JSP 태그로 JAVA 코드를 넣어 특정 로직을 수행할 수 있도록 합니다. JSP는 서블릿으로 변환된 후 사용자에게는 HTML 형태의 코드만 전송하므로 JSP 태그의 내용은 사용자에게 노출되지 않습니다. 구분 JSP 태그 용도 지시자 페이지 속성 지정 주석 주석 처리 선언 변수, 메소드의 선언 표현식 결과값 출력 스크립트릿 J.. 2022. 2. 17.
ajax로 form data(multipart) 전송 하기 출처사이트 : https://wondongho.tistory.com/96 HTML JQuery $("#btnSubmit").click(function (event) { //preventDefault 는 기본으로 정의된 이벤트를 작동하지 못하게 하는 메서드이다. submit을 막음 event.preventDefault(); // Get form var form = $('#fileUploadForm')[0]; // Create an FormData object var data = new FormData(form); // disabled the submit button $("#btnSubmit").prop("disabled", true); $.ajax({ type: "POST", enctype: 'multip.. 2022. 2. 17.
ajax로 데이터 주고받기 출처사이트 https://ttuk-ttak.tistory.com/21 [Spring] 스프링 ajax로 데이터 주고받기 Spring 프레임워크로 개발 도중, JSP에서 Controller로 / Controller에서 JSP로 데이터를 주고 받는 경우가 생겼다. 이 때, AJAX를 사용하여 간단하게 처리하였다. CASE 1 : 스프링에서 JSP로 데이터를 보낼 때 M ttuk-ttak.tistory.com Spring 프레임워크로 개발 도중, JSP에서 Controller로 / Controller에서 JSP로 데이터를 주고 받는 경우가 생겼다. 이 때, AJAX를 사용하여 간단하게 처리하였다. CASE 1 : 스프링에서 JSP로 데이터를 보낼 때 MainController.java @RequestMappi.. 2022. 2. 17.
반응형