보안(Security)
-
스프링 시큐리티(Spring Security)를 이용한 보안 강화보안(Security)/Spring Security 2018. 9. 10. 10:18
보안에 있어 가장 기본적이고 중요한 개념이 인증(Authentication)과 권한부여(Authorization) 두가지다. - 인증(Authentication)은 어플리케이션의 사용자가 사용자가 주장하는 본인이 맞는지 확인하는 절차로 3가지 인증기법이 주로 사용된다. * 크리덴셜 기반 인증 : 사용자명과 비밀번호를 이용한 방식 * 이중 인증 : ATM 기기를 이용할 때처럼 물리적인 카드와 사용자가 입력한 개인정보 조합하는 방식 * 하드웨어 인증 : 자동차 키를 통해 운전할 수 있는지 없는지를 가늠 권한부여(Authorization)란 인증을 통해 인증된 주체를 하나 이상의 권한을 부여해 보호되는 자원들에 대한 접근 가능여부를 할당하는 것을 말한다. - 인증이 되었더라도 권한이 없다면 사용할 수 없는 게..
-
화이트 리스트 (White List) 기법 이용한 크로스 사이트 스크립팅(XSS) 방어 예제보안(Security)/XSS 2018. 9. 10. 10:04
크로스 사이트 스크립팅(Cross Site Scripting)은 "게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격" 이라 네이버 지식백과에 기술되어 있다. 중요한 점은 웹 페이지에 스크립트 삽입이 가능하다는 점이다. 게시판 페이지를 통해 확인하자. 글 작성할 때 alert을 호출하는 스크립트를 삽입후 등록한다.정상적인 글을 클릭해 들어가면제목과 내용이 잘 나온다.반면 스크립트를 삽입한 게시글에서는다음과 같이 alert이 호출되고글 내용이 없게 되는 것이다. 게시판의 개발 목적 및 용도와 적합하지 않게 되고, 보안 또한 취약해지게 된다. 이를 극복하기 위해 네이버에서 lucy-xss를 지원한다..
-
크로스 사이트 요청 위조 (CSRF. Cross Site Request Forgery)보안(Security)/XSS 2018. 9. 10. 09:57
"특정 사용자를 대상으로 하지 않고, 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)를 하게 만드는 공격이다." 네이버 백과사전 정의이다. 대표적인 예가 무엇이 있을까? 쇼핑몰 사이트이다. 1) 쇼핑몰 사이트에 관리자가 읽을만한 글을 게시한다. 홈페이지에 게시된 계좌번호를 해커의 것으로 변경하는 URL 요청을 보이지 않는 태그(img)로 삽입한다. 2) 관리자가 글을 읽을 때 URL 요청이 수행되어 계좌번호가 변경하는 요청을 수행한다. 3) 사이트로 입금되는 금액이 해커의 수중에 넘어간다. 하기 카페 글을 읽고 이해에 도움이 되었으니 참고할 것.https://cafe.naver.com/ehdl24eek/29669 이를 응용한다면 게시..
-
정규표현식( Regular Expression ) 및 패스워드( Password ) 정책보안(Security)/Login, Password Policy 2018. 9. 10. 09:54
사이트 회원가입을 할 때 "비밀번호는 영어 대,소문자 / 특수문자 / 숫자를 사용해 8자 이상 입력해주세요" 라는 글을 많이 봤을 것이다. 개발자 입장에서 사용자가 입력한 비밀번호가 상기 조건을 만족하는지 어떻게 확인할까? 여기서 정규 표현식이 필요하다. 정규 표현식(Regular Expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 줄여서 regix라고 칭한다. 각종 프로그래밍 언어에서 지원하고 있고, 자바에서는 regix 패키지를 통해 지원한다. 로그인 할 때 빈번하게 사용되는 정규표현식 정리 메타문자설명.임의 1개 문자와 일치해야 함*메타 문자 앞의 문자가 0개 이상 일치해야 한다[...]일치 문자 목록[^...]비일치 문자 목록(...)괄호 안의 문자열 ..
-
(Web Security)로그인 시도 횟수 제한 예제 및 쿼리보안(Security)/Login, Password Policy 2018. 9. 10. 09:53
로그인 시도 횟수에 제약을 주지 않는다면 해커 입장에서 무작위 공격을 시도해 정보를 매우 쉽게 취득할 수 있다. 이를 방지하기 위해 아이디에 대한 접속 횟수를 제한해 일정 횟수가 넘는다면 로그인 시도를 막는 기법을 사용하도록 한다. ID마다 로그인 실패 횟수, 로그인 제한여부, 최근 로그인 시도 시각, 제한횟수를 저장하는 칼럼을 추가한다. 구현 기능 - 4회 이상 로그인 시도 실패시 제한횟수 * 10분동안 로그인 시도를 금지한다. - 10분 이후 로그인 시도시 로그인 실패횟수, 로그인 제한 여부를 갱신하고 로그인 시도를 반복한다. - 로그인 성공시 제한횟수까지 0으로 초기화시킨다. 다음과 같이 로그인 시도 횟수 제한하기 위한 칼럼들을 추가한다. LOGIN_FAIL_COUNT : 로그인 실패 횟수 IS_L..
-
스프링(Spring) SHA-256 알고리즘 이용한 비밀번호 암호화보안(Security)/Login, Password Policy 2018. 9. 10. 09:48
DB에는 다양한 정보들이 있는데, 개인을 지칭할 수 있는 정보를 노출하지 않도록 노력하는것이 의무화 되어 있다. 이를 위해 다양한 데이터들을 암호화 및 복호화를 통해 보안을 강화한다. 암호화된 데이터를 복원할 수 있느냐(복호화가 되느냐) 안되느냐에 따라 암호화 강약을 가늠할 수 있다. 노출됐을 때 미칠 영향력에 따라 암호화 강화 정도를 정한다. 비밀번호, 바이오 정보 암호화 강도가 높아야 하는 데이터 : 일방향 암호화 (복호화 X) 해쉬함수 사용 나머지 암호화 필요한 정보 : 블록 암호. 복호화 가능 과거에는 복호화가 가능한 블록암호를 사용했지만 오늘날 대부분 데이터를 암호화할 때 일방향 암호화 알고리즘을 사용한다. 대표적으로 SHA-256, SHA-512 등이 있다. 그중 SHA-256을 통한 비밀번호..
-
커맨드 인젝션 (Command Injection) 예제보안(Security)/Injection 2018. 9. 10. 09:44
※ 크롬, 오페라 등 브라우저는 인터넷 익스플로러와 비교해 구현 방법에 차이가 있다. 같은 html 문서를 작성해도 브라우저에 따라 결과가 다를 수 있다는 말이다. 보안 포스팅을 위해 문제 상황을 발생시키기에 인터넷 익스플로러가 적합해 보안 포스팅에서는 항상 인터넷 익스플로러를 실습 브라우저로 사용한다. 이번 예제는 수강중인 교육 강사님이 주신 예제를 통해 확인했다. SQL 인젝션과 마찬가지로 명령어 또한 임의로 삽입할 수 있다. * 커맨드 인젝션은 시스템 명령어를 호출하는 어플리케이션의 인자값을 조작하여 의도치 않은 명령어를 수행하도록 유도하는 기법이다. 파로스(Paros)를 켜 프록시 서버를 통해 Request, Response 정보를 가공해보았다.파로스를 켜 Trap 탭에서 Trap request에..
-
SQL Injection 예제보안(Security)/Injection 2018. 9. 10. 09:38
※ 크롬, 오페라 등 브라우저는 인터넷 익스플로러와 비교해 구현 방법에 차이가 있다. 같은 html 문서를 작성해도 브라우저에 따라 결과가 다를 수 있다는 말이다. 보안 포스팅을 위해 문제 상황을 발생시키기에 인터넷 익스플로러가 적합해 보안 포스팅에서는 항상 인터넷 익스플로러를 실습 브라우저로 사용한다. 이번 예제는 수강중인 교육 강사님이 주신 예제를 통해 확인했다. CWE 는 Common Weakness Enumeration의 약어를 가진 미 산하 기관이 운영하는 사이트로 - 웹 개발시 취약점에 대한 정의, 설명, 해당 취약점의 플랫폼, 빈도 및 예제코드, 완화방법 기술 등을 참고할 수 있는 사이트이다. 개발을 업으로 삼는다면 PL이나 PM이 되고 나서야 참고할 일이 있을만한 사이트이다. CWE에서는 ..