본문 바로가기

반응형

Backend

(180)
[Security] Blind SQL Injection Blind SQL Injection이란? Blind SQL Injection  공격은 쿼리의 결과를 참과 거짓으로만 출력하는 페이지에서 사용되는 공격으로, 출력 내용이 참과 거짓밖에 없어서 이를 이용해 데이터베이스의 내용을 추측하여 쿼리를 조종하는 공격이다. 공격 방법 중 한가지는 데이터베이스(DB)에서 xp_cmdshell 기능의 활성화가 가능했고, 시스템 명령(system command)을 실행할 수 있었다. 그런 다음 DNS-based exfiltration을 통해 시스템 명령의 출력을 얻을 수 있었다. 하지만 내가 겪은 공격은 시간 기반 SQL Injection 공격으로 단순히 시간지연을 통해 DoS공격과 같은 SQL Injection공격이었다. DB 종류구문MySQLselect BENCHMARK..
[CSS] 하위 요소 적용 및 단어단위로 줄바꾸기 bodyViewBody클래스의 직계 자식요소들에 적용 bodyViewBody클래스의 모든 하위 자식요소들에 적용   줄바꿈과 관련된 속성 및 태그white-space속성줄바꿈, 공백 여부 설정word-break속성줄바꿈을 할때 단어를 기준으로 설정하는 속성overflow-wrap속성의미가 없는 텍스트 줄바꿈 설정hyphens속성텍스트 줄바꿈 할때 하이픈으로 연결하는 방법 설정태그텍스트 줄바꿈태그의미가 없는 텍스트 줄바꿈태그공백속성(Property) 속성값값(예)설명normalword-break: normal;기본 줄바꿈 규칙 적용keep-allword-break: keep-all;줄바꿈 할 때 단어를 유지하며 적용break-allword-break: break-all;CJK(중국어,일본어,한국어) ..
240729 회고 1. 같은 테이블의 다른 컬럼값 가져오기 (컬럼 복사)-- 다른 컬럼 값 복사하기UPDATE BOARD SET TITLE_ENG = TITLE-- 문자열 추가해서 다른 컬럼 값 복사하기UPDATE BOARD SET TITLE_ENG = CONCAT('ENG_',TITLE) 2. stream조건 추가List ticketList = service.find_tickets;...ticketList.stream() .filter(s -> s.getUsedDate().isEmpty()) .filter(s -> { LocalDate termTo = LocalDate.parse(s.getTermTo(), DateTimeFormatter.ofPattern("yyyyMMdd")); termTo.format(DateTi..
[Oauth2] 구글 OAuth2 연동(클라이언트 ID/PW발급) 카카오 OAuth2 연동을 할때와 마찬가지로 해당 서비스에 등록을 먼저 해주어야 한다. https://console.cloud.google.com/projectselector2/home/dashboard?hl=ko&supportedpurview=project Google 클라우드 플랫폼로그인 Google 클라우드 플랫폼으로 이동accounts.google.com 먼저 클라우드 플랫폼에 프로젝트를 생성해야 한다.서비스 이용관련 동의를 진행해야 한다. 무료 계정으로 하더라도 일반계정으로 활성화 하기 전까지 자동결제가 되거나 하지는 않으니 안심하고 진행해도 된다고 한다.     이후에 테스트 사용자를 추가하고 저장한 동의 화면을 요약해서 보여주는데 스킵하겠다.    클라이언트 OAuth ID를 저장하고 나면 ..
[Web] about API 웹에 대한 기초가 없이 개발을 시작하다 보니 REST API가 무엇인가 하는 의문이 남아있었다.어떻게 만드는지는 알지만 왜 가 빠져 있는 상태이다. 그래서 약간의 짬이 생겼을 때 공부하려고 한다. Spring Controller에서 구현할때 API를 RestFul한 방식으로 구현한다고 한다. 그리고 우리는 Mapping하는 값으로 URL을 지정한다. 그래서 나타난 질문 API와 Domain의 차이가 뭘까? 거기에 URL은 무엇을 의미하는 걸까?예시는 다음과 같다.예) https://www.example.com/path/to/resource?query=example#section      127.0.0.1:8080/path/to/resource?query=example#section- Domain : IP..
[DRF] JWTAuthentication Errors 1. 기본 인증 클래스 변경시ImportError: Could not import 'MunDeuk.startService.addon.JWTAuthentication.JWTAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: Module "MunDeuk.startService.addon.JWTAuthentication" does not define a "JWTAuthentication" attribute/class. ➡️ 주로 모듈 경로 또는 클래스 정의가 잘못되었을 때 발생한다.프로젝트 구조가 아래와 같고 JWTAuthentication.py안에 JWTAuthentication.class가 있는 경우를 예로 들었다.p..
[Spring Security] Exception Handler 보안문자를 추가하면서 보안문자 검증에 실패하면 Exception을 던져서 Hanlder에서 처리하게 하려고 했다. 하지만 예외는 던지는데 그대로 Break로 처리하고 Handler에서 처리하지 않고있었다. 사용 코드 : ⬇️더보기@RequiredArgsConstructor@EnableMethodSecurity@Configuration@Slf4jpublic class SpringSecurityConfig2{ ... @Bean public AuthenticationSuccessHandler customSuccessHandler() { return new CustomLoginSuccessHandler2(cookieUtil, jwtTokenizer2); } @Bean public Auth..
[drf] JWT인증 추가 JWT인증 하는 방식을 추가 구현하여 보안을 높이려고 하였다.Java와는 다르게 기본적인 보안을 적용하기 용이했다.쿼리를 별도로 작성하지 않고 메서드를 통해 중복확인과 비밀번호 해시화를 기본 메서드를 이용해 작성할수있었다.하지만 인증을 진행하기 위해서는 그런 부분을 만족시킨 상태에서 인증이 진행되어야 했기에 처음 구현시 이 부분을 알지 못해 원하는 동작을 이끌어 내지 못했다.csrf도 drf에서 기본적으로 제공되어 jwt를 쿠키에 담아 인증하도록 구현했다.password 확인시 동일하게 나오는데 check_password는 통과하지 못했다. 찾아보니 auth를 사용하면 hash화를 시켜줘야 하게 되는데 기본적으로 그냥 string으로 저장하게 되어 이런 일이 생겼다고 한다.따라서 회원가입 로직부터 변경해..

반응형