몸값을 뜻하는 Ransom과 제품을 뜻하는 Ware의 합성어.

사용자의 동의 없이 컴퓨터에 설치하고 무단으로 사용자의 파일을 모두 암호화 시켜 인질로 잡아 금전적인 행위를 하는 악성 프로그램을 말한다.


1.백업

가장 강력하고 확실한 대처법.


NAS 사용 - 물리적분리, 백업솔루션 기본 장착. 자동으로 작동. NAS로 이동한 파일은 NAS시스템안에서 실행되지 않기 때문에 감염된 파일은 날려버리고 감염 이전 파일만 골라서 복구 가능.


공CD/DVD/블루레이에 보관


클라우드 서비스 이용 - 구글드라이브, 드롭박스 등 동기화 클라우드 서비스 이용.


안티바이러스 및 OS업데이트 , 차단 솔루션 병행 사용


2.하드웨어 / 소프트웨어적 격리


엑세스 권한 설정

기억장치 분리 - 보조기억장치를 업무용, 게임용 분리하여 설치

백업된 디스크 읽기 전용 디스크로 설정


어도비 플래시 삭제

플래시 플러그인 설치 사이트 사용 자제

'보안, 시큐어코딩' 카테고리의 다른 글

CSRF 사이트 간 요청 위조  (0) 2018.12.17
XSS 크로스 사이트 스크립팅  (0) 2018.12.17
SQL 인젝션  (0) 2018.12.17

CSRF Cross-site Request Forgery


개요

웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격방법을 의미한다


예방대책

폼 작성 시 GET보다 POST방식을 사용하고 폼과 해당 입력을 처리하는 프로그램 사이에 토큰을 사용하여 공격자의 직접적인 URL사용이 동작하지 않도록 처리한다. 


Referer 로 HTTP헤더 정보 체크.

패스워드 변경 등 민감한 정보를 다룰때 토큰발급하여 토큰없이는 요청거부하는 방법.

CAPTCHA를 이용하여 인증하는 방법.

스프링 컨트롤러 사용 시 RequestMethod 로 GET/POST 구분 정의.

'보안, 시큐어코딩' 카테고리의 다른 글

랜섬웨어 예방  (0) 2018.12.17
XSS 크로스 사이트 스크립팅  (0) 2018.12.17
SQL 인젝션  (0) 2018.12.17

XSS 크로스 사이트 스크립팅


개요

SQL injection과 함께 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며,[2] 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취한다. (나무위키 인용)

보통 자바스크립트를 이용하여 공격하는 경우가 많음.




보안대책

사용자가 입력한 문자열에서 <,>,&,"," 등을 replace등의 문자 변환메소드를 사용하여 &lt,&amp, &quot로 치환

게시판 등에서 html태그 허용 시 html 태그의 리스트를 선정한 후, 해당 태그만 허용하는 방식 적용


코드예제 

파라미터(name)에 <script>alert(document.cookie);</script>와 같은 스크립트 코드가 입력되고, 이 값이 그대로 사용되면 사용자의 쿠키정보가 공격자에게 전송될 수 있는 코딩



외부 입력 문자열에서 replaceAll()메소드를 사용하여 <,>,&," " 같이 스크립트 생성에 사용되는 문자열을 &lt, &gt, &amp, &quot 등으로 변경하면, 파라미터 name에 악성코드가 포함되더라도 스크립트 실행 불가하도록 코딩




참고문헌 및 이미지 출처

행정안전부, 한국인터넷진흥원 - 홈페이지 SW(웹) 개발보안 가이드

행정자치부, 한국인터넷진흥원 - 전자정부SW개발운영자를 위한 JAVA 시큐어코딩 가이드

'보안, 시큐어코딩' 카테고리의 다른 글

랜섬웨어 예방  (0) 2018.12.17
CSRF 사이트 간 요청 위조  (0) 2018.12.17
SQL 인젝션  (0) 2018.12.17

SQL 인젝션


개요

공격자가 입력 폼 및 URL 입력란에 SQL문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안취약점




보안대책

  • 1. preparedStatement 클래스와 하위 메소드 executeQuery(), execute(), executeUpdate()를 사용하는 것이 바람직하다.
  • 2. preparedStatement 클래스를 사용할 수 없는 환경이라면, 입력값을 필터링 처리한 후 사용한다. 필터링 기준은 SQL구문 제한, 특수문자 제한, 길이제한을 복합적으로 사용한다.


코드예제

다음은 안전하지 않은 코드의 예를 나타낸 것으로, 외부로부터 tableName과 name의 값을 받아서 SQL쿼리를 생성하고 있으며, name의 값으로 name' OR 'a'='a를 입력하면 조작된 쿼리문 전달이 가능한 형태의 코딩


외부로부터 인자를 받는 preparedStatement 객체를 상수 스트링으로 생성하고, 인자 부분을 setXXX 메소드로 설정하여, 외부의 입력이 쿼리문의 구조를 바꾸는 것을 방지하는 코딩




참고문헌 및 이미지 출처

행정안전부, 한국인터넷진흥원 - 홈페이지 SW(웹) 개발보안 가이드

행정자치부, 한국인터넷진흥원 - 전자정부SW개발운영자를 위한 JAVA 시큐어코딩 가이드

'보안, 시큐어코딩' 카테고리의 다른 글

랜섬웨어 예방  (0) 2018.12.17
CSRF 사이트 간 요청 위조  (0) 2018.12.17
XSS 크로스 사이트 스크립팅  (0) 2018.12.17

+ Recent posts