728x90 전체 글188 신뢰 되지 않는 URL 주소로 자동 접속 연결 - 자동 연결할 외부 사이트의 URL 과 도메인은 화이트 리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트주소로 사용하는 경우에는 입력된 값이 화이트 리스트에 존재하는지 확인해야 한다. 안전하지 않은 코드 ▼ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcepetion { String query = request.getQueryString(); if(query.contains("url")) { String url = request.getParameter("url"); response.sendRedirect(url); } //... } 안전한 코드 ▼ p.. 2022. 11. 15. 위험한 형식 파일 업로드 - 업로드하는 파일 타입과 크기를 제한하고, 업로드 디렉터리를 웹 서버의 다큐먼트 외부에 설정한다. - 화이트리스트 방식으로 허용된 확장자만 업로드되도록 하고, 확장자도 대소문자 구분 없이 처리하도록 한다. - 공격자의 웹을 통한 직접 접근을 차단한다, 또한, 파일 실행 여부를 설정할 수 있는 경우, 실행 속성을 제거한다. > 보안에서 화이트리스트란 기본 정책이 모두 차단인 상황에서 예외적으로 접근이 가능한 대상을 지정하는 방식 또는 그 지정된 대상들을 말한다.블랙리스트 반대 개념. 안전하지 않은 코드 ▼ public void upload(HttpServletRequest request) throws ServletException { MultipartHttpServletRequest mRequest = .. 2022. 11. 15. 크로스 사이트 스크립트 웹 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도하여 공격 - 사용자가 입력한 문자열에서 , &, "," 등을 replace등의 문자 변환 함수나 메소드를 사용하여 <, >, &, "로 치환 - HTML 태그를 허용하는 게시판에서는 게시판에서 지원하는 HTML 태그의 리스트(White List)를 선정한 후, 해당 태그만 허용하는 방식 적용 - 보안성이 검증되어 있는 API를 사용하여 위험한 문자열 제거 예제 1 안전하지 않은 코드 ▼ Name : 외부로 받은 name을 그대로 출력하므로 안전하지 않다. 안전한 코드 ▼ replaceAll 사용 2022. 11. 11. 자원 삽입 - 외부 입력값을 검증하지 않고 시스템 자원에 대한 식별자로 사용하는 경우 문제가 될 수 있음 - 외부의 입력을 자원 식별자로 사용하는 경우, 적절한 검증을 거치도록 하거나 사전에 정의된 적합한 리스트에서 선택되도록 작성 예제1 : 적절한 검증을 거치도록 한다. 안전하지 않은 코드 ▼ public void service() throws IOException { int def = 1000; ServerSocket serverSocket; Properties props = new Properties(); String fileName = "file_list"; FileInputStream in = new FileInputStream(fileName); props.load(in); //외부에서 입력한 데이터를 .. 2022. 11. 11. 자바 정규표현식 Pattern, Matcher Pattern클래스 - 패턴 정의(검색에 사용됨)Matcher클래스 - 패턴 검색에 사용PatternSyntaxException클래스 - 정규식 패턴의 구문 오류를 나타냅니다. 예시import java.util.regex.Matcher;import java.util.regex.Pattern;public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("test",Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher("do TEST!"); boolean matchFound = matcher.find(); .. 2022. 11. 11. SQL 삽입 데이터베이스와 연동된 웹 어플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안약점을 말한다. 1) preparedStatement 클래스와 하위 메소드 executeQuery(), execute(), executeUpdate()를 사용하는 것이 바람직하다. 안전하지 않은 코드▼ String query = " SELECT * FROM " + tableName + " WHERE Name = " + name; 외부로부터 tableName 과 name 의 값을 받아서 SQL 쿼리를 생성하고 있다. 안전한 코드 ▼ String query = "SELECT * FROM ? WHERE Name.. 2022. 11. 11. 아나콘다 vs 파이참 아나콘다 데이터 과학자, IT 전문가 및 비즈니스 리더 를 위한 엔터프라이즈 데이터 과학 플랫폼 패키지 관리 및 배포를 단순화하는 것을 목표로 하는 과학 컴퓨팅을 위한 Python 및 R 프로그래밍 언어의 무료 오픈 소스 배포판입니다. 패키지 버전은 패키지 관리 시스템 conda에 의해 관리됩니다. 기술 스택의 "데이터 과학 도구" 범주에 속한다. 파이참 Python IDE . 통합개발환경. PyCharm의 스마트 코드 편집기는 Python, JavaScript, CoffeeScript, TypeScript, CSS, 인기 있는 템플릿 언어 등에 대한 최고 수준의 지원을 제공합니다. 언어 인식 코드 완성, 오류 감지 및 즉각적인 코드 수정이 가능하다. 2022. 11. 10. 파이썬 에러 SyntaxError: Missing parentheses in call to 'print' 책을 따라 하던 도중 문법 에러가 났다. 책은 파이썬 2를 사용했고, 나는 파이썬 3을 사용중이었다. 왜 파이썬2는 문제가 없는데 파이썬3은 문제가 될까? python2의 print 문이 python3가 되면서 print 함수가 되었기 때문이다. 함수에는 인자를 전달할 수 있는데, 함수에 전달되는 인자는 함수(인자1, 인자2) 와 같은 형태이다. 고로, 괄호 안에 문장을 넣어주면 해결된다. print ('Hello World') 로 작성해주면 성공! 2022. 11. 10. 이전 1 ··· 16 17 18 19 다음 728x90