반응형 분류 전체보기203 [웹사이트] xss 방지 xss란 개발자가 의도치 않은 악성 스크립트를 삽입하여 공격하는 방법이다. 이런것을 의도치않고 개발했다가 xss공격이 들어오면 난감할 수 있다. 방지하는법은 매우 간단하다. 특수문자를 치환해주면 된다. 예를들어 " 2020. 4. 30. [데이터베이스] 소프트 파싱과 하드 파싱 SQL 파싱, 최적화, 로우소스 생성 과정을 거쳐 생성된 것을 내부 프로시저라고 한다. 내부 프로시저를 반복, 재사용할 수 있도록 캐싱해두는 메모리 공간을 라이브러리 캐시라고 한다. 라이브러리 캐시는 SGA (System Global Area)의 구성요소이다. SGA는 서버프로세스와 백그라운드 프로세스가 공통으로 액세스 하는 데이터와 제어구조를 캐싱하는 메모리 공간이다. 사용자가 SQL문을 전달하면 SQL을 파싱한 후 라이브러리 캐시에 존재하는지부터 탐색한다. 이때 라이브러리 캐시에 존재해서 바로 실행 하는것을 소프트 파싱 존재하지 않아서 최적화 및 로우소스 생성단계까지 거치는것을 하드 파싱이라고 한다. ※ 라이브러리 캐시 존재이유 매번 하드파싱을 하려면 비용이 어마어마하다. 그렇기때문에 효율적으로 이용.. 2020. 4. 26. [데이터베이스] SQL 최적화과정 DBMS는 SQL을 실행하기전에 아래와 같은과정을 거쳐 최적화를 진행한다. 1. SQL파싱 실행할 SQL을 전달받으면 SQL파서가 파싱진행 파싱트리 생성 Syntax체크 : 문법적오류가 없는지 체크 semantic 체크 : 의미상 오류가 없는지 체크 2. SQL최적화 옵티마이저가 실행한다. 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행경로를 생성해서 비교 한 후 가장 효율적인 하나를 선택 3. 로우소스 생성 ※ SQL 옵티마이저란? 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터액세스 경로를 선택해주는 DBMS의 핵심엔진 ※ 옵티마이저 Hint 옵티마이저가 항상 최선의 선택을 하는것은 아니다. DB에 Insert, delete등 연산이 일어날 경우 인덱스를 이상하게.. 2020. 4. 26. 이 클래스는 아무것도 상속받지 않을까요 ? Door라는 클래스를 하나 생성했다. 여기서 문제! 이 클래스는 상속을 받고 있을까요 ? 정답은 Yes입니다. 언뜻보기에는 아무것도 받지 않는것 같아보입니다. 하지만 getSuperClass() 메소드도 결과를 찍어보면 아래와 같이 나옵니다. 어째서 이런 결과가 나올까요? 클래스를 상속받지 않는 클래스에는 기본적으로 Object 클래스를 상속받도록 해놨기때문입니다. 그렇기때문에 모든 클래스에서는 Object가 가지고있는 메소드를 사용할 수 있는것입니다. 2020. 4. 19. [데이터베이스] org.postgresql.util.PSQLException:CODE[0]STATE[22001]ERROR: value too long for type character varying(1) org.postgresql.util.PSQLException:CODE[0]STATE[22001]ERROR: value too long for type character varying(1) 데이터의 길이가 데이터타입의 길이보다 짧아서 생기는오류 2020. 4. 16. [개발도서] 자바성능 튜닝이야기 필자는 회사에 입사해서 가장 먼저 들은 이야기가 "개발자라면 감명깊게본 개발도서가 한권이상은 있어야한다" 라는 말씀이었다. 이 말씀을 듣고 내가 읽은 개발도서들은 개발도서라기보다는 입문서같은 느낌이었다. 예를들어 JAVA의 정석, DB기초책 등등 기초개념과 활용법을 알려주는 입문서같은 느낌이었다. 그래서 제일먼저 드는생각이 성능튜닝에 관한 도서를 읽고싶었다. 그 결과 자바성능 튜닝이야기라는 책을 찾았다. 책을 본 목적 성능튜닝을 어떻게 하는것인가? 에 대한 답 책을 본 후기 결과부터 말씀드리자면 방향성을 얻고싶으신분께는 추천 구체적인 방향을 원하시는분께는 비추천이다. 필자는 초보자이기때문에 방향성을 얻은것같다. 무언가를 사용할때 이정도까지는 알고 사용을 해야겠다라는 생각이 들었다. static, sync.. 2020. 4. 12. [기초개념] Session Time설정에 따른 장단점 Session Timeout이 짧을 때 - 사용자가 불편할 수 있다. 이해를 돕기 위해 네이버가 Session Timeout을 5초로 설정했다고 가정하겠다. 메일을 보내려고 네이버에 로그인을 한 후 5~10분에 걸쳐 메일을 작성했다. 그리고 보내려고 보내기를 눌렀더니 권한이 없다고 로그인을 하란다. Session Timeout이 5초기 때문에 로그아웃 처리가 된것이다. 이렇기때문에 자주 로그인을 해야하는 불편함이 있을 수 있다. - Timeout이 길때보다는 보안에 이점이 있을 수 있다. Timeout이 5분이라고 가정하겠다. 은행에서 이체를 해야해서 로그인을 하고 이체를 했다. 10분뒤 어떠한 사람이 우연히 session key를 알게되서 자기의 은행으로 돈을 이체시키려고 시도했다. 하지만 5분이라는 .. 2020. 4. 11. [데이터베이스] 테이블설계 및 컬럼추가시 주의사항 테이블을 설계할 때 어떠한 데이터가 들어가는지 중요하다. 여기까지만 봤을때는 뭐야? 당연한소리 아니야? 라고 생각할 수 있다. 테이블에 들어가는 데이터가 다른 테이블과 연관이 어떻게 되어있는지, 연관된 테이블의 데이터수는 얼마나 되는지도 매우 중요하다. 큰 서비스일수록 한 테이블의 row수는 어마어마하다. 이런것들을 생각하지않고 A.id 랑 B.a_id랑 연관성있네? 하고 fk를 설정하는 순간 지옥이 시작될 수 있다. 또한 추후 서비스의 방향과 고객의 요청을 예상 해야된다. 대다수의 고객들은 A기능 개발 해주세요!! 하고 요청해서 A기능을 개발해주면 A에 B도 추가시켜 주세요. 라고 한다. 고객들의 입장에서는 편리하고자 사용하기 때문에 당연한 것이다. 그렇기때문에 테이블설계 또는 컬럼추가에 신중 해야한다.. 2020. 4. 8. [docker] the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty' docker exec -i -t name bash 명령어를 실행할때 이런 오류가 났다. 안내문과같이 앞에 winpty를 붙여 winpty docker exec -i -t name bash 를 실행하면 정상적으로 동작한다. 2020. 4. 6. [회원가입] 회원가입 이메일 인증 구현 Build.gradle 파일에 dependencies 부분에 추가 해줍니다. 이메일 인증을 받기 위해서 이메일을 적고 인증번호를 보낼 수 있는 버튼과 인증번호를 입력하고 알맞는 값을 입력하였는지 확인할 버튼을 생성해야한다. 이메일을 보내는 부분 이메일을 보내는 버튼을 눌렀을 때 동작하는 function입니다. isEmail function을 이용하여 이메일 형식인지 검사합니다. (select 방식으로 바꾸셔도 됩니다. 필자는 귀찮아서 정규식으로 검사했습니다.) api를 호출하여 성공적으로 보냈으면 아무메세지를 안띄웠습니다. 원하시는 메세지를 출력하시거나 알려주시면 됩니다. 실패시에는 오류, 잠시 후 재시도라는 메세지를 띄웠습니다. 호출을 받는 Controller 부분입니다. 세션을 얻어오고 입력한 ema.. 2020. 4. 4. [발표영상] 그런 REST API로 괜찮은가? [이응준님] https://www.youtube.com/watch?v=RP_f5dMoHFc&t=2s 이번 발표영상을 보며 제가 알고있었던 REST API는 단순 HTTP API였다는것을 깨달았습니다. 제가 만들던 API는 uniform interface 이 충족되지 않았습니다. 제가 알고있었던 지식이 부족한 지식임을 깨달았고 앞으로 더 노력해야겠다는 다짐을 할 수 있게 해준 영상입니다. REST API를 대충알고있다, 뭔지는 알고있다 라고 생각 하시는분들께 추천 드리는 영상입니다. 앞으로 REST API조건을 만족하게끔 코드를 작성할 예정입니다. 2020. 4. 1. [Spring] java.lang.RuntimeException: Could not invoke method: .. defined in class ... so no params were used. Test 코드를 작성하는데 아래와 같은 오류가 발생했다. 필자는 paramsForTestFree 메소드를 작성한 이후에 발생하여 paramsForTestFree메소드만 주구장창 봤는데 발생원인은 따로있었다... 원인은 이부분이었다. 이상한것을 알겠는가? 아래와같이 public을 붙여주면 정상적으로 동작한다..... 2020. 3. 30. 이전 1 ··· 7 8 9 10 11 12 13 ··· 17 다음