본문 바로가기
728x90
반응형

입력데이터검증및표현9

크로스사이트 스크립트 크로스사이트 스크립트 공격자가 전달한 스크립트 코드가 사용자(희생자)의 브라우저를 통해서 실행되는 것 → 브라우저 또는 PC의 정보를 탈취 → 가짜 페이지를 생성해서 사용자 입력을 유도 후 입력한 정보를 탈취 → 희생자 PC의 제어권을 탈취 ⇒ BeEF [방어기법] 입력값에 실행 가능한 스크립트 코드 포함 여부를 필터링 후 사용 → 서블릿 필터, 인터셉터, 컨트롤러(Validator) 출력값에 실행 가능한 스크립트 코드 포함 여부를 필터링 후 사용 ⇒ 안전한 문자열로 대체 - HTML 인코딩 - TagLib 사용 ${fn:escapeXml(...)} → 컨트롤러, 뷰 #1 반사 XSS (Reflective XSS) 입력값이 (실행 가능한 스크립트 코드 포함 여부를 확인하지 않고) 출력으로 사용되는 경우 .. 2019. 10. 1.
경로조작 및 자원삽입 외부 입력값을 검증, 제한하지 않고 서버 자원의 식별자로 사용하는 경우 발생 → 의도하지 않은 자원 생성 및 참조가 발생 → 정상적인 서비스 실행을 방해하거나 시스템 장애를 유발 → 파일 자원인 경우 지정한 경로 밖(=권한 밖)의 파일에 접근이 가능 = 경로조작 [방어기법] 자원 식별자를 미리 정의하고 정의된 범위 내에서 사용할 수 있도록 제한한다. = 화이트 리스트 방식의 입력값 제한 외부 입력값을 내부 처리에 직접 사용하지 않고, 내부에 정의된 값을 맵핑하는 용도로 사용 ⇒ 캡슐화 및 입력값 제한을 동시에 제공 외부 입력값이 파일 경로로 사용되는 경우, 경로 조작 문자열( . .. / \ ) 포함 여부를 확인 후 사용할 수 있도록 한다. 다음 진단결과의 정오탐 여부를 판정하고 판정근거를 기술하시오. .. 2019. 10. 1.
SQL 삽입 외부 입력값에 쿼리 조작 문자열 포함 여부를 확인하지 않고 쿼리문(SQL) 생성 및 실행에 사용하는 경우 발생 → 쿼리문의 구조와 의미가 변형되어서 실행 ⇒ 권한 밖의 데이터에 접근이 가능 ⇒ DBMS 서버의 제어권 탈취 ⇒ 쿼리 실행 결과를 우회한 처리 [대응방안] 정적쿼리를 사용(실행) = PreparedStatement 객체를 사용 = 구조화된 쿼리 실행 = 파라미터화된 쿼리 실행 동적쿼리를 사용해야 하는 경우, 입력값 검증 후 사용 = 쿼리 조작 문자열 포함 여부를 확인 후 사용 애플리케이션에서 사용하는 DB 사용자의 권한을 최소로 부여 → Stored Procedure를 이용한 SQLi 공격 또는 Union-Based SQLi 공격을 완화 오류 메시지에 시스템 정보가 노출되지 않도록 통제 → E.. 2019. 10. 1.
Command Injection 방어 코드 1) test.jsp : OPTION의 value를 명령어가 아닌 코드로 수정 --- show File1.txt --- --- show Dir --- 2) TestController : 사용 가능한 운영체제 명령어를 화이트 리스트로 정의, 전달받은 코드에 해당하는 명령어만 실행String data = request.getParameter("data");String[] allowCommand = { "type", "dir" };try { data = allowCommand[Integer.parseInt(data)];} catch (NumberFormatException e) { buffer.append("허용되지 않은 요청입니다."); return buffer.toString();}if (data != n.. 2014. 11. 18.
728x90
반응형