본문 바로가기
반응형

시큐어코딩16

적절한 인증 없는 중요기능 허용 - 안전하다고 확인된 라이브러리나 프레임워크를 사용한다. 즉, OpenSSL 이나 ESAPI의 보안기능을 사용한다. 안전하지 않은 코드 ▼ public void sendBankAccount(String accountNumber, double balance) { BankAccount account = new BankAccount(); account.setAccountNumber(accountNumber); account.setToPerson(toPerson); account.setBalance(balance); AccountManager.send(account); } 안전한 코드 ▼ public void sendBankAccount(HttpServletRequest request, HttpSession s.. 2022. 11. 21.
무결성 점검 없는 코드 다운로드 - 원격으로부터 소스 코드 또는 실행파일을 무결성 검사 없이 다운로드하고, 이를 실행하는 경우 host server의 변조, DNS spoofing 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있다. - SW의 자동 업데이트와 같이 다운로드될 코드를 제공할 때는 코드에 대한 암호화된 시그니처를 사용하고 클라이언트가 시그니처를 검증하도록 한다. 안전하지 않은 코드 ▼ URL[] classURLs = new URL[]{new URL("file:subdir/")}; URLClassLoader loader = new URLClassLoader(classURLs); Class loadedClass = Class.forName("MyClass",true,loader); 안전한.. 2022. 11. 21.
프로세스 제어 - 신뢰되지 않은 소스나 신뢰되지 않은 환경으로부터 라이브러리를 적재하거나 명령을 실행하면, 악의적인 코드가 실행될 수 있다. - 프로그램 내에서 라이브러리를 적재할 때 절대경로를 사용한다. 안전하지 않은 코드 ▼ Runtime.getRuntime().loadLibrary("libraryName"); 안전한 코드 ▼ Runtime.getRuntime().loadLibrary("/usr/lib/libraryName"); 해시테이블을 이용해 정해진 이름의 라이브러리만이 정해진 절대경로를 통해 로딩 가능하도록 설계 import java.io.*; import java.net.URLDecoder; import java.sql.*; import java.util.*; import javax.servlet.*; p.. 2022. 11. 18.
크로스 사이트 스크립트 공격 취약점: DOM - 외부에서 입력되는 스크립트 문자열이 웹페이지 생성에 사용되면 생성된 웹페이지를 열람하는 사용자에게 피해를 입힐 수 있다. - JSP의 document.write()메소드와 같이 JSP의 DOM 객체 출력을 수행하는 메소드의 인자값으로 외부의 입력을 사용할 경우 위험한 문자를 제거하는 과정이 수행되어야 한다. 1. 특수 문자 치환 String name = request.getParameter("name"); if( name != null ) { name = name.replaceAll("",">"); name = name.replaceAll("&","&"); name = name.replaceAll("\"","""); name = name.replaceAll("\'","'"); name = n.. 2022. 11. 18.
SQL 삽입공격 : mybatis Data Map - 외부에서 입력된 값이 질의어의 인자값으로만 사용되지 않고, 질의 명령어에 연결되는 문자열로 사용되면, 공격자가 의도하지 않았던 문자열을 전달할 수 있다. - 문자열 삽입 인자($...$) 를 사용하지 않고 ## 형태의 질의문을 사용한다. DELETE STUDENTS WHERE NUM = #num# AND Name = '$name$' ▼ DELETE STUDENTS WHERE NUM = #num# AND Name = '#name#' 2022. 11. 18.
반응형