목록보안 (20)
삶 가운데 남긴 기록 AACII.TISTORY.COM
Cross-site Scripting 악의적인 스크립트로 정보 유츨등 공격을 할 수 있습니다. 사용자 입력 문자열에서 , &, "," 등을 <, >, &, "로 치환해 방어합니다. HTML 태그를 허용하는 게시판에서는 허용하는 태그(white list)를 선정 한 후 허용된 태그만 허용하는 방식을 사용합니다. 보안 검증이 되어 있는 API를 사용해야 합니다. 아래 예제는 name 이라는 입력 값에 스크립트 (예: 를 수행하게 하여 쿠키 정보 유출 등 피해를 줄 수 있게 됩니다. NAME: replaceAll() 메소드로 위험한 문자를 교체합니다. OSWASP(http://Https://www.owasp.org/index.php/Esapi)에서 제공하는 보안 API를 사용합니다. J2E..
Resource Injection 파일이나 소켓 포트 등 외부 입력값을 식별자로 사용하는 경우, 시스템 자원에 임의로 접근하거나 수정할 수 있고 잘못된 입력값으로 인해 시스템이 불안정해질 수 있습니다. 입력 값을 검증하거나 사전에 정의된 리스트에서 선택되도록 작성해 방어합니다. 외부 입력이 파일명인 경우 경로 순회를 수행할 수 있는 문자를 제거해야 합니다. 아래 예제는 외부의 입력을 소켓 번호로 그대로 사용하고 있어 안전하지 않은 예입니다. public void service(){ //외부에서 입력 받은 데이터 String service = props.getProperty("Service No"); int port = Integer.parseInt(service); //외부 입력 값으로 소켓생성 serv..
SQL Injection 사용자의 입력값에 Query를 직접 입력해서 쿼리 구조를 바꾸어 개발자가 의도하지 않은 동작을 수행하게 하는 공격 기법입니다. 예) ID를 guest ' OR 'a'='a' -- 으로 설정 한경우 쿼리가 아래처럼 생성되어 Where절이 항상 참이므로 비번 없이 로그인에 성공할 수 있습니다. SELECT * FROM members WHERE userId='guest' OR 'a'='a' -- AND paseword = ... preparedStatement 클래스를 사용해서 미리 컴파일된 쿼리를 사용해 쿼리를 동적으로 생성할 수 없게 해서 방어합니다. String query = "SELECT * FROM ? WHERE NAME = ?"; pstmt con.prepareStateme..
PuTTY를 이용해 리눅스(centos)에 SSH 접속할 때 윈도우 컴퓨터에 개인키를 저장해두고 리눅스 서버에 공개키를 저장해서 패스워드 입력 없이 접속하는 방법을 소개합니다. 이 방법은 개인키를 유출되지만 않는다면 아이디 패스워드 로그인 방법보다 보안적으로 안전합니다. 그래서 개인키는 로컬 PC에 저장하되 공용 PC에는 저장하면 안됩니다. PuTTY 와 PuTTYgen 다운로드 링크: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 1. 다운 받은 PuTTYgen 를 실행하고 Generate 버튼을 누릅니다. 마우스를 포인터를 빈칸에서 움직이면 RSA키 쌍이 생성됩니다. 안 움직이면 진행이 안됩니다. 난수를 생성하기 위한 작업입니다. 2..
https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=36389 KISA 인터넷 보호나라&KrCERT KISA 인터넷 보호나라&KrCERT www.boho.or.kr Log4j 2 버전에 존재하는 JNDI(Java Naming and Directory Interface) 인젝션 취약점으로, 이를 악용하면 원격 코드 실행이 가능하게 됩니다. CVSS스코어 10점 만점중 10점 위험도로 가장 높은 위험도의 취약점 수준이 심각하므로 빠른 대응이 필요합니다. 보안 취약점 영향받는 log4j 버전 2.13~2.15 : CVE-2021-45046(서비스 거부 취약점) 1.2.x 모든 버전: CVE-2021-4104(원격 코드 실행 취약점)..