본문 바로가기

개발

(66)
믹스드 콘텐츠(Mixed Content)로 인한 보안 문제 믹스 콘텐츠란 만약 웹 사이트에서 HTTP 방식으로 이미지를 불러오거나 영상을 불러올 때 https 방식과 http 방식이 섞여있는 것을 말한다. 최근 크롬과 파이어폭스의 경우는 https가 아니면 경고하고 로드하지 않는다. HTTPS의 약화 - 보안되지 않는 프로토콜을 사용할 경우 네트워크를 도청하고 양자간 통신을 보거나 수정하는 수단인 중간자 공격에 취약하므로 전체 페이지의 보안이 약화된다. 이 때 공격자는 리소스를 사용해 페이지를 완전히 제어할 수 있기 때문에 아에 사전에 HTTP:// 프로토콜을 차단해버리는 방식이다. 쉬운 해결 방법은 https:// 로 소스를 변경하는 것이다.
Spring Boot 외부 파일 경로 설정 Spring Boot 외부 파일 경로 @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry){ String resourcePath = "file:///TistoryImages/"; String connectPath = "/image/{subfolder}/**"; registry.addResourceHandler(connectPath) .addResourceLocations(resourcePath); } } Spring Boot는 내부적으로 static 안에 있는 파일만 가져올 수 있도록 세팅되어있음...
Spring Boot - Java 동적 페이지 웹 크롤링 Selenium Notion에서 Tistory로 자동업로드하는 프로젝트를 진행중에 정적 웹 크롤링과 동적 웹 크롤링이 다르다는 것을 알게 되었다. 그래서 동적 웹 크롤링을 따로 공부해야했다. Selenium 셀레니움은 웹 애플리케이션을 실행시켜볼 수 있는 프레임워크이다. 자동 로그인, 자동 글쓰기, 자동 클릭 등 많은 기능을 사용할 수 있다. 의존성 Gradle implementation 'org.seleniumhq.selenium:selenium-java:4.6.0' Chrome Driver 다운로드 크롬 우측 위 … 클릭 도움말 Chrome 정보 클릭 후 버전 확인 https://chromedriver.chromium.org/downloads 사이트에서 맞는 Chrome driver 다운로드 다운받은 chromedr..
JavaScript - 이벤트 핸들러 이벤트 핸들러 : 웹 페이지에서 사용자 상호작용과 관련된 동적인 기능을 구현하기 위해 사용되는 기술이다. Ex) 마우스 클릭, 키보드 입력, 스크롤 등 자바스크립트는 다양한 이벤트 핸들링 API를 제공한다. HTML 내부 이벤트 핸들러 Click me 여기서 버튼을 누르면 onClick이라는 이벤트 핸들러에 통제하에 실행된다. 그리고 아래 스크립트 태그에서 자바스크립트 코드를 정의하고 있다. 그러나 이것은 지양하는 방법이다. 유지보수가 어렵고 보안에도 좋지 않다. 그래서 Chrome 확장 프로그램에서는 아에 내부 이벤트 핸들러가 포함되어 있으면 실행조차 안되도록 만들어 버린다. HTML 외부 이벤트 핸들러 텍스트 입력: Click me document.addEventListener('DOMContentL..
Java - 입력: BufferedReader, StringTokenizer - BufferedReader : 문자열로 입력을 받게 되어있음. 받을 때 마다 적절한 형변환이 필요함. 그러나 스캐너보다 빠름 - InputStream : 자바에서 기본이 되는 입출력, Stream이란 출발지와 도착지를 이어주는 다리임 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 버퍼리더를 사용하면 위의 방식으로 사용하게 되는데 코드를 해석해보면 1. 텍스트를 읽어 메모리에 저장해둠 (BufferReader) 2. InputStreamReader(System.in) 에서 바이트 스트림을 문자 스트림으로 변환 이제 br을 통해 값을 입력받을 수 있음. 단, 이것을 사용하려면 예외처리 IOException e가 필요함 ..
C++ vector 초기화 방법 vector는 자유롭게 크기에 상관없이 데이터를 삽입할 수 있지만 초기화를 해놓고 행렬처럼 사용하고 싶을 수가 있다. 그럴 때 사용하는 방법이다. vector vec(3); //1 vector vec(3, -1); //2 1번 : 크기 3으로 모두 0으로 초기화 2번 : 크기 3으로 모두 -1로 초기화 vector vec(n, vector(m,-1)); 다차원 벡터 초기화. n행 m열로 초기화
Spring Security - 로그인 처리 과정 스프링 시큐리티가 로그인 인증을 하는 로직은 다음과 같다. Http 요청이 들어오고 필터를 거처 마지막에 SecurityContextHolder에 들어간다. 세션에 들어갈 수 있는 오브젝트는 스프링 시큐리티에서 정해져있다. 그것이 위의 있는 Authentication 이다. 이 안에는 유저 정보가 들어있고 유저 정보가 있는 오브젝트 타입은 UserDetail이다. 위 6번에서 알 수 있듯, UserDetatils는 인터페이스로 제공이 된다. 이제 저 인터페이스를 구현해보자 PrincipalDetails로 UserDetails 인터페이스를 구현한다. 이제 구현한 프린시펄디테일을 어떻게 세션에 넣는 걸까? 방법은 간단하다. 간편한 서비스가 이미 구현되어 있기 때문에 우린 그 인터페이스를 구현하여 사용하면 된..
우분투에서 MySql 실행법 MySql 설치는 되어있다는 가정하에 sudo mysql -u root -p 하면 엑세스 거부 에러가 날 수 있다. 이때는 mysql의 경로를 지정해주면 해결된다. 보통은 sudo /usr/bin/mysql -u root -p 이다. 이후 비밀번호를 입력하면 mysql 실행 로그가 뜰 것 이다.