분류 전체보기
-
Spring SecurityJava/Spring 2018. 9. 11. 16:24
Spring Security 보안에 있어서 가장 중요한 개념은 “인증(Authentication)”과 “권한부여(Authorization)”이라 할 수 있다. 인증(Authentication)이란 애플리케이션의 사용자가 해당 사용자가 주장하는 본인이 맞는지 확인하는 절차로써 아래와 같은 방법을 사용할 수 있다. - 크리덴셜 기반 인증 : 사용자명과 비밀번호를 이용한 방식 - 이중 인증 : ATM기기를 이용할 떄처럼 물리적인 카드와 사용자가 입력한 개인정보를 조합하는 방식 -> OTP, 핸드폰 본인인증 - 하드웨어 인증 : 자동차 키와 같은 방식 권한부여(Authorization)란 인증을 통해서 인증된 주체를 하나 이상의 권한에 매핑해, 보호된 리소스에 대한 권한을 체크하는 것을 말한다. - 인증이 되었..
-
Secure - 잘못된 접근 제어Java/Spring 2018. 9. 11. 13:22
잘못된 접근 제어 접근이 허락된 사용자만 접근할 수 있도록 하고, 그 외에는 접근하지 못하게 한다. -> Update, Delete 특정기능에 대해 적절한 인증과 인가 작업이 수행되지 않는 경우 -> 인증 : 로그인 되있는지, 인가 : 기능을 수행할 권한이 있는지 비 인가된 기능에 대해 UI를 제공하지 않아야 한다. -> 버튼 안보이게 하기 공격자가 제공한 정보에 대한 점검작업이 서버실에서 수행되지 않는 경우를 막아야 한다. 공격자는 UI를 통하지 않고 URL을 직접 조작해서 관리자 페이지로 접근을 시도한다. 페이지에 인증, 인가 작업이 수행되게 해서 인증, 인가가 되지 않으면 튕겨버리게한다. Redirecf / Forward 웹 애플리케이션이 사용자가 입력한 값을 사용해 다른페이지로 이동시키는 기능을 ..
-
Secure - 암호화정책Java/Spring 2018. 9. 10. 15:51
암호화정책 데이터 저장시 안전한 암호 알고리즘을 사용해 암호화된 데이터를 전송하도록 해야된다. - 개인정보를 위해서 복호화가 가능한 암호방식, 복호화가 불가능한 암호방식이 있다. 비밀번호나 계좌, 주민번호등은 복호화가 안되게 해야 안전하다. - 단방향 - 해시함수 Http는 취약하다 Http에 SSL인증서를 더한 안전한 프로토콜이 Https다. 중간에 내용을 캐치당하더라도 내용이 변조될 위험이 적다. 블록암호 - 복호화가 가능한 암호, 양방향 암호 단방향 암호에서는 똑같은 암호를 입력해서 같은 값이 나오면 진행한다. 단방향 암호 해시함수에서는 SHA-256이 많이 쓰인다. 슈퍼컴퓨터로 복호화하려해도 30만년 이상 걸리는 어려운 함수다. 양자컴퓨터에서는 더 쉽게 풀리는 단점이 있지만, 현존하는 컴퓨터 세대..
-
Secure - FileJava/Spring 2018. 9. 10. 15:32
파일 업로드/다운로드 취약점 파일의 타입이나 확장자를 체크하지 않는 취약점 - 파일을 업로드할때 난수화 시키면 막을 수 있다., 애초부터 배치파일을 못보내게 한다., 특정파일을 업로드하지 못하게 막아둔다, 실행가능한 파일을 업로드 한 뒤 에러가 발생하는지 확인한다. - Spring mvc방법을 쓰면 동작되는 방법이 다르기 때문에 동작되지 않는다. 큰 사이즈 파일 업로드 취약점 진단. - 업로드할때 사이즈를 지정시켜서 막을 수 있다., 업로드되는 파일은 외부에서 직접 접근이 불가능한 경로에 저장한다. 타입이나 확장자를 체크한다. 파일체크 - MimeTypeCheck
-
Secure - CSRFJava/Spring 2018. 9. 10. 14:31
크로스 사이트 요청 위조 - CSRF 구매대행, 마일리지조작, 스팸대리발송 등 사용가능 해커가 가장 큰 공을 들여서하는 공격이다.방어하기가 XSS만큼 까다롭다. 중간에 발견되면 고치기가 힘들다. 설계 단계부터 없으면 많은 노력이 필요하다. 사이트가 신뢰하는 사용자를 통해서 해커가 원하는 명령을 대신 수행하게 만든다. 사용자의 의도와 상관없은 행동이 수행된다. CSRF는 약간의 공격으로 막을 수 없고 사이트 전체를 수정해야하기때문에 설계단계부터 설정해야 한다. ex) 추천수 조작 - 이미지태그에 추천수 링크를 경로로 잡고 사용자에게 보이지 않게하고 글을 올린다. 실제 사용자가 수행을 한 것인지 보증이되면 막을 수 있다. -> 막아야 될 곳이 많다. 실제사용자의 보증 -> 토큰이 필요하다. 로그인마다 사용자..
-
Secure - XSSJava/Spring 2018. 9. 10. 14:31
XSS - 크로스 사이트 스크립팅공격자가 악성 스크립트를 입력값으로 입력했다면 공격을 당하는 사용하는 해당 스크립트로 인해 쿠키 값이 유출되거나, 해당 사용자의 권한으로 웹 애플리케이션의 기능이 악용 또는 오용되거나, 또는 피싱 사이트로 유도되어 개인정보가 유출되는 경우가 발생될 수 있다. XSS 공격 유형 Reflective XSS공격자가 악성스크립트가 포함된 URL을 클라이언트에게 노출시켜 클릭하도록 유도하여 쿠키 정보를 탈취하거나, 피싱사이트, 불법 광고 사이트로 이동하게 한다. Stored XSS악성 스크립트를 DOCUMENT에 저장하여 해당 DOCUMENT 정보를 이용하는 애플리케이션을 통해, 시스템을 사용하는 모든 사용자들이 해당 스크립트를 실행하게 함으로써 사용자의 쿠키 정보를 탈취하거나 피..
-
Secure Coding - 패스워드 정책Java/Spring 2018. 9. 7. 15:10
패스워드 정책 - 3가지 종류 이상의 문자 구성으로 8자리 이상의 길이로 구성된 패스워드 - 2가지 종류 이상의 문자 구성으로 1자리 이상의 길이로 구성된 패스워드 (문자 종류는 알파벳 대문자, 소문자, 특수문자, 숫자) - 널리 알려진 단어를 포함하지 않기 - 사용자의 ID와 연관성이 있는 단어를 포함하지 않는 패스워드 - 개인정보는 가족이름, 생일, 주소 , 전화번호 등이 포함되지 않게 해야한다. 개인정보 이용 법으로 재정되있다. - 기업에서는 패스워드 정책을 내놨기때문에 사용자 입장에서 조건을 안맞추면 손해배상 명분이 힘들수도 있다. ( 3개월마다 비밀번호 변경 등 ) 대응기법모든 계정에 대해 공격자가 쉽게 추측할 수 없는 패스워드가 설정되도록 제약을 주어야 한다.아래는 일반적으로 권고되는 패스워드..