본문 바로가기

Secure Coding3

[시큐어코딩] 신뢰되지 않는 URL 주소로 자동접속 연결 사용자로부터 입력되는 값을 외부사이트의 주소로 사용하여 자동으로 연결하는 서버 프로그램 -> 피싱(Phishing) 공격에 노출되는 취약점 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있 도록 공격 - 자동 연결할 외부 사이트의 URL과 도메인은 화이트 리스트로 관리 - 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트 리스트에 존재하는지 확인 EX) 외부로 연결할 URL과 도메인들은 화이트 리스트를 작성한 후, 그 중에서 선택하도록 함으로써 안전하지 않은 사이트로의 접근을 차단 //이동 할 수 있는 URL범위를 제한하여 피싱 사이트등으로 이동 못하도록 한다. String allowedUrl[] = { "/main.do", "/login.jsp.. 2021. 8. 9.
[시큐어 코딩] 위험한 형식 파일 업로드 서버 측에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드가능하고, 이 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있는 보안약점 - 화이트 리스트 방식으로 허용된 확장자만 업로드를 허용 - 파일명과 확장자를 외부사용자가 추측할 수 없는 문자열로 변경하여 저장 - 저장 경로는 ‘web document root’ 밖에 위치시켜서 공격자의 웹을 통한 직접 접근을 차단 - 파일 실행여부를 설정할 수 있는 경우, 실행 속성을 제거 ex) 업로드할 파일에 대한 유효성 검사 String fileName = multi.getFilesystemName("filename"); if (fileName != null).. 2021. 8. 9.
[시큐어코딩] SQL Injection >> SQL 삽입 데이터베이스(DB)와 연동된 웹 응용프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안약점 > 보안대책 - PreparedStatement 객체 : DB에 컴파일 된 쿼리문을 전달하는 방법 - DB 커리에 사용되는 외부 입력값에 대해 특수 문자 및 쿼리 예약어 필터링 - Struts, Spring 등과 같은 프레임워크 사용 시 외부 입력값 검증모듈 및 보안 모듈을 상황에 맞추어 적절하게 사용 *PreparedStatement 객체 지원 JAVA : JDBC Python : PDO EX1) 외부로부터 입력받은 gubun의 값을 SQL 쿼리 생성하는 데 사용하기 Pre.. 2021. 8. 3.