전체 글 150

[Spring] XSS 공격과 보안처리 방법

XSS 공격이란? 흔히 사이트의 게시판의 게시글 작성 시 내용에 스크립트 코드를 삽입하여 게시글을 읽는 사용자의 쿠키정보 탈취 하거나 악성프로그램 다운로드, 공격자가 의도한 URL로 이동시키는 등 개발자가 의도하지 않은 기능을 동작하도록 만든다. XSS의 공격 방식은 크게 Reflected XSS, Stored XSS, DOM Based XSS 세 가지로 분류할 수 있으며 이에 대한 설명은 링크로 대신 한다. XSS(Cross Site Scripting) 공격이란? - https://4rgos.tistory.com/1 XSS 공격 실습방법 - https://g-idler.tistory.com/12 XSS 공격이란 - https://brownbears.tistory.com/250 XSS 취약점에 대한 보안..

[Java] 자료구조 List, Set, Map의 차이

List , Set, Map 의 차이점에 대해 알아보겠다. 1. List : 저장공간이 필요에 의해 자동으로 늘어난다(순서가 있는 저장공간) * 특징 : 순서가 있고, 중복을 허용(배열과 유사) * 장점 : 가변적인 배열(배열이 자동으로 늘어남) * 단점 : 원하는 데이터가 뒤쪽에 위치하는경우 속도의 문제 * 방식 : equals()를 이용한 데이터 검색 List의 자료구조는 크게 Vector, ArrayList, LinkedList로 나뉘어 진다. 1) ArrayList: 객체 내부에 있는 배열에 데이터를 저장한다. - 상당히 빠르고 크기를 맘대로 조절할수 있는배열 - 단방향 포인터 구조로 자료에 대한 순차적인 접근에 강점 2) Vector : ArrayList와 동일하게 사용가능하다. - ArrayL..

JAVA 2021.05.31

[Mybatis] <resultMap> 사용

나의 경우는, DB에서 컬럼명 규칙은 스네이크 표기법으로 file_bno 이런식으로 DB를 설정했고 JAVA는 카멜표기법으로 fileBno 이런식으로 했는데, 이렇게되면 서로 변수명이 달라서 set 매칭이 안되더라, 이럴때 방법은 여러개가 있는데 그중 하나 내가 생각한건 쿼리에서 별칭을 줘서 자바변수랑 동일하게 빼내는방법도 있는데 일회성같고 불편해서 구글링해보니 으로 사용하면 가능하다.. 또는 Mybaits .xml파일을 따로 생성해서 설정하는방법도 되는거같다 m.stock.domain.NoticesFileUploadVo" id="fileVo"> SELECT * FROM NOTICESFILE WHERE FILE_NOTICES_BNO = #{bno}

[Mybaits] <selectKey> 속성

SQL 수행작업 중 insert된 이후에 알 수 있는 값 또는, 생성된 값을 바로 가져와서 select 쿼리를 보내야 하는 경우가 있다. 주로 생성하고 난 후의 인덱스(번호)를 가져와 작업해야 하는 상황에서 많이 사용한다. 이런경우 java에서 insert 쿼리를 실행하고 값을 받은 후 값을 가지고 다시 쿼리를 DB에 전송하는 방법이 있다. 하지만, 불필요한 여러번의 DB 입출력은 시간이 느려진다는 단점이 있다. 그때, selectKey를 사용하여 바로 적용할 수 있다. 마이바티스, 아이바티스 두개 다 적용이 가능하다. selectKey는 DB에 명령을 한번만 보내며, 우선 입력한 값의 결과값을 다음 쿼리로 바로 return 시켜주는 것이다. 아래 예제는 selectKey의 기본 사용법이다. SELECT..

[Spring] @param 사용이유

public void countQuery(@Param("name")String parameter); 이렇게 @Param 어노테이션을 붙이면 본인이 원하는 명으로 mapper에서 사용할 수 있다. 위와 같은 경우는 #{name}이 되겠다. 사실 위의 코드같은경운 파라미터가 하나라서 @Param 을 안써도되지만, 파라미터가 두개일경우 마이바티스에서 인식을 못하기때문에 @param을 사용해야한다. 물론, 어노테이션을 쓰지 않아도 mapper에서 #{param1} 이라던지, #{parameter} 로 파라미터 명을 적으면 사용이 가능하다.

[Spring] @RequestParam 파라미터 매핑

컨트롤러를 구현할 때 가장 많이 사용되는 어노테이션은 바로 @RequestParam 일 것이다. @RequestParam은 HTTP 요청 파라미터를 컨트롤러 메소드의 파라미터로 전달받을 때 사용된다. 즉, JSP에서 request.getParameter(); 와 비슷하다고 볼 수 있다. @RequestParam 어노테이션이 적용된 파라미터는 기본적으로 필수 파라미터이다. 따라서 @RequestParam 어노테이션에 명시한 HTTP 요청 파라미터가 존재하지 않을 경우 스프링 MVC는 잘못된 요청을 의미하는 400 응답 코드를 웹 브라우저에 전송한다. 필수가 아닌 파라미터인 경우 required 속성 값을 주어 false로 지정해주면 된다. required 속성 값을 따로 작성안할 경우 기본 값은 true로..

[Javascript] 모든 문자열 치환하기 (replace, replaceAll)

replace() 함수는 문자열에서 변경하려는 문자열이 여러 번 반복될 경우, 첫 번째로 발견한 문자열만 치환해 줍니다. 즉, 'apple, banana, banana' 이렇게 'banana'가 여러 번 반복될 경우 replacT('banana', 'tomato')를 실행하면 첫번째로 발견된 'banana'만 치환되어 'apple, tomato, banana'의 결과를 얻게 됩니다. 간단하게 replactAll() 이라는 함수가 있다면 좋겠지만, 불행하게도 Javascript에는 replaceAll() 이라는 함수는 없습니다. ***** 제이쿼리에서는 있음!

자바스크립트 2021.05.30

[Mybaits] 마이바티스 #{}과 ${}의 차이

ex) (ID = admin) ▶ mybatis mapper SELECT ID FROM test WHERE ID = #{ID} Oracle로 넘어온 쿼리 SELECT ID FROM test WHERE ID = ? 실제 수행 쿼리 SELECT ID FROM test WHERE ID = 'admin' ▷'$'란? Statement를 의미합니다. ex) (num = 77) ▶ mybatis mapper SELECT ID FROM test WHERE num= ${num} Oracle로 넘어온 쿼리 SELECT ID FROM test WHERE num = 77 실제 수행 쿼리 SELECT ID FROM test WHERE num = 77 ▷ '#'과 '$'의 차이 '#'을 사용하게 된다면 오라클에서 변수를 바인드..

[Web] XSS와 CSRF 공격의 특징 및 차이

XSS(Cross-Site Scription) - 크로스 사이트 스크립팅(SQL 인젝션과 함께 웹에서 가장 기초적인 취약점 공격 방법의일종) 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 이 취약점은 웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지않고 사용할경우 나타난다. 보통 의도치않은 행동을 수행시키거나, 쿠키나 세션 토큰등의 민감한정보를 탈취한다 (보통 악의적인 스크립트 삽입!) CSRF(Cross-Site Request Fogery) - 사이트간 요청위조 , 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정,삭제,등록)를 특정웹사이트에 요청하게 하는 공격 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코..

WEB 2021.05.25