코코야이야기
* Javascript 반복문의 종류 1. for문 : 일반적인 반복문으로, 초기화 식, 조건식, 증감식을 이용하여 반복문을 실행 for (let i = 0; i < 10; i++) { console.log(i); } 2. while문: 조건식이 true인 동안 반복문을 실행 let i = 0; while (i < 10) { console.log(i); i++; } 3. do-while문: 일단 한 번 실행한 후, 조건식이 true인 동안 반복문을 실행 let i = 0; do { console.log(i); i++; } while (i < 10); 4. for-in문: 객체의 프로토타입 체인 상의 속성을 포함하여 모든 속성을 반복하여 실행 주의사항 : 객체에 사용자가 정의한 메서드나 속성을 추가하는 경..
사용자 식별 방법 1. 세션: 서버에서 관리하는 정보를 이용하여 사용자를 식별하는 방법. 일반적으로 로그인 시 사용자의 아이디와 패스워드를 인증받아 세션을 생성하고, 세션 ID를 쿠키에 저장. 2. 쿠키: 클라이언트에 저장되는 정보를 이용하여 사용자를 식별하는 방법. 사용자의 브라우저에 쿠키가 저장되며, 서버에서는 클라이언트의 쿠키값을 이용하여 사용자를 식별. 3. 토큰: 사용자 인증 정보를 담고 있는 문자열로, 서버와 클라이언트 간에 인증 정보를 주고받을 때 사용. 일반적으로 로그인 시 서버에서 토큰을 생성하여 클라이언트에 전달하고, 이후에는 클라이언트에서 서버로 요청을 보낼 때 토큰을 함께 전달하여 인증을 수행. 4. 핑거프린트: 브라우저의 고유한 정보를 이용하여 사용자를 식별하는 방법. 브라우저의 ..
* 취약점명 - Insecure Randomness * Math.random - 매우 예측하기 쉬운 알고리즘을 사용하여 만들어진 난수로, 보안적으로 안전하지 않음 - 내부적으로 seed 값을 생성하며, 이 값을 직접 지정할 수 없음 - 이 알고리즘은 시드 값이 변경되지 않는 한 항상 같은 순서의 난수 시퀀스를 생성하며, 같은 난수가 연속해서 발생할수 있으며 이론적으로 모든 값이 동일한 확률로 발생할 가능성이 있음 - 시드 값이 알려진 경우 다음에 생성될 난수를 예측할 수 있을 뿐만 아니라, 악의적인 사용자는 예측 가능한 난수 시퀀스를 생성하여 암호화된 데이터를 해독할 수 있음 * Math.random - seed 동적 생성 - Math.random() 함수로 발생하는 같은 난수 시퀀스를 완전히 제거할 수..
[시큐어코딩] 접근제어 * 파라미터 - 사용자가 서버에 요청을 보낼 때 서버에게 전달해야 하는 값을 가지고 있는 변수 - 서버에게 전달되는 파라미터 값을 사용자가 임의적으로 변경하는 것을 "파라미터 변조"라고 함 * 파라미터 변조 사고의 원인 - 사용자의 요청에 대해 서버 애플리케이션에서 적절한 접근제어가 구현되어 있지 않아 발생함 * 파라미터 변조 사고의 대책 - 클라이언트로부터 요청되는 값(GET/POST 파라미터, 쿠키 메모리값 등)은 언제든지 조작될 수 있기 때문에 외부 입력값을 신뢰하지 말고, 반드시 검증을 수행하는 기능을 구현해야 함 * 파라미터 변조 4가지 진단 1) 진단 1 "파라미터 조작을 통해 허가되지 않은 작업이 실행되는가?" - 공격자가 작업 요청이 어떤 방식으로 요청되는지를 체크해..
[시큐어코딩] 쿠키 및 세션관리 1. 쿠키 (Cookie) - Statless 프로토콜인 HTTP 통신 시 서버가 사용자 정보를 유지하기위해 생성해서 응답 헤더에 붙여 클라이언트에게 전송하는 정보 - 쿠키 정보는 사용자 PC의 메모리 또는 파일에 저장되고, 해당 사이트에 요청을 전송할 때 이름=값 형식으로 효청 헤더에 포함되어 서버에 전달됨 * 제약사항 - 브라우저당 최대 300개 각 호스트마다 최대 20개까지 사용가능 - 크기는 최대 4KB까지 가능(브라우저마다 다름) * 용도 - 세션 관리를 위한 세션 토큰 저장 - 클라이언트 관리에 필요한 정보, 팝업창 제한 설정과 같은 임시데이터 관리 - 제공 정보의 커스터마이징을 위한 사용자 취향 등 저장 세션쿠키 (Session Cookie) 영구쿠기 (Per..
[시큐어코딩] 계정 및 인증관리 인증관리 인가관리 설명 허락된 사용자만 시스템을 사용하도록 하기 위한 제약 권한을 가진 사용자만 시스템을 사용하도록 하는 제약 취약점의 원인 패스워드 관리 정책이나 로그인 관리 정책 부재 - 사용자의 요청에 대해 권한 체크 부재 - 부적절한 권한 체크 * 계정관리 패스워드 선택 정책 - 패스워드로 사용되는 문자열에 대한 정책 정의 방법 - 사용자들이 안전한 문자열을 패스워드로 선택하는 것을 강제하는 시스템이 구축되어야 함 패스워드 관리 정책 - 문자열 선택 정책 - 패스워드 관리 정책 - 초기 패스워드 변경 정책 - 사용자 패스워드 분실 처리 정책 * 패스워드 선택 정책 5가지 진단 1) 진단 1 "패스워드에 문자열 정책이 적용되어 있는가?" - 회원가입 시 입력되는 패스..
간단한 도메인 발급 (freenom 활용) 도메인을 발급받을 수 있는 사이트는 매우 많다. 카페24, 가비아 등등.. 그중 무료 도메인발급이 가능하면서 사용자가 많은 freenom 을 사용해보자. [카페24] [가비아] 먼저 freenom 사이트에 접속하면 아래와 같은 페이지가 뜬다. 중간의 검색창에 원하는 url 을 검색하면 사용 가능한 도메인 리스트가 검색된다. freenom 에서 무료로 등록가능한 국가코드는 아래와 같다. .tk : 토켈라우 제도 .ml : 말리 .ga : 가봉 .cf : 중앙아프리카 공화국 .gq : 적도 기니 이 중 한글발음이 편한 .ga 를 이용해 도메인을 선택해본다. 기간 부분을 확인해보면 12개월까지 무료, 그 이상의 기간들에는 금액이 측정되어 있는것을 볼 수 있다. 무료 ..
간단한 웹사이트 제작 (WIX 활용) Wix는 다양한 템플릿과 플러그인, 다양한 기능을 제공하는 웹 사이트 빌더이다.무료와 유료의 방법으로 웹사이트를 제작할 수 있는데, 처음 웹사이트를 만든다면 무료로 경험을 쌓는것이 좋다. 그럼 무료 웹사이트를 제작해보자. 먼저 무료 Wix 요금제의 장단점을 살펴보면, 장점저렴하고 간편한 서비스드래그 앤 드롭 기능을 사용하여 간편하게 사이트를 제작무제한 페이지를 제공하여 도메인을 확장무료 자동 보안 호스팅을 제공하여 서버를 쉽게 검색전 세계에서 액세스할 수 있는 도메인을 무료로 생성하고 추가 비용이 필요 없는 서비스를 제공 단점무료 요금제 사용시 Wix 광고가 게시됨사용자 정의 도메인을 사용할 수 없음 (“{메일아이디}.wixsite.com/{사용자정의문자}”)웹 사이..
로또 번호 추출 심화 - 2 앞에서 추출한 로또리스트를 가지고 로또분석사이트에 무료로 공개된 알고리즘으로 몇가지 알고리즘을 짜고, 랜덤으로 추출한 로또번호를 알고리즘에 돌려 확률이 높은것들만 뽑아보자. 모든 알고리즘, 로또번호 추출 등을 java 파일로 만들었기에 jsp 로는 높은확률만 뽑도록 구현했다.//Read ExcelReadExcel readexcel = new ReadExcel();int[][] xls = readexcel.getData(); LottoNumbers lottoNo = new LottoNumbers();int[] test_number; UpperPercent up = new UpperPercent(); int MAX = 5000, cnt = 0;double result = 0.0;..
로또 번호 추출 심화 -1 앞에서 만든 로또번호 추출을 좀더 실용적으로 업그레이드 시키기위해 분석 알고리즘을 추가해보자. 인터넷의 로또번호 추천 사이트에 들어가보니 아래와 같은 분석항목을 무료로 제공해 주고 있다.이런 사이트들은 아래의 분석외에도 각자만의 알고리즘이 더 있겠지만, 그정도까지를 바란건 아니기에 기본 분석만 추가하기로 한다. 우선 위와 같은 분석항목에 대한 확률이 맞는지 확인해볼 필요가 있다.다행히 로또 사이트에서 엑셀로 1회부터의 당첨번호 히스토리를 제공해주고 있다. 엑셀 데이터를 JAVA로 읽기 위해선 jxl 이라는 라이브러리가 필요하다. https://sourceforge.net/projects/jexcelapi/files/jexcelapi/위의 경로에서 최신버전을 받거나 첨부해놓은 파..