Back End
-
[SQL 튜닝] Offset 쿼리가 느린 이유Back End/서버 비용 2022. 12. 19. 18:58
* 단순 지식 기록용 포스팅입니다. Off-set 쿼리 SELECT * FROM items WHERE 조건문 ORDER BY id DESC OFFSET 페이지번호 LIMIT 페이지사이즈 Off-set 쿼리가 느린 이유 select .. limit 10000,10020 과 같은 쿼리를 실행하면 10,000부터 20개만 읽는게 아니라, 10,020개를 읽은 후 앞의 10,000개를 버리는 식으로 DB가 동작하기 때문. 왜 그렇게 비효율적으로 동작하게 설계를 했을까 했는데, where 절이 삽입되면 인덱스로 끊어서 offset 위치를 파악할 수 없기 때문. 그래서 데이터수가 많아지고, Offset 의 위치가 커질수록 조회쿼리는 느려짐. 데이터 수가 많아지면 UI 를 바꿔서라도 No Offset 쿼리로 변경하는..
-
[XSS] HTML Escape Characters 리스트Back End/보안 2022. 12. 19. 18:38
Number Symbol Entity Name Code Description 9 Tab 	 Tab 10 New Line 
 New Line 32 Space Space 33 ! ! Exclamation mark 34 “ " " Quotation mark 35 # # Number sign 36 $ $ Dollar sign 37 % % Percent sign 38 & & & Ampersand 39 ‘ ' Apostrophe 40 ( ( Opening/Left Parenthesis 41 ) ) Closing/Right Parenthesis 42 * * Asterisk 43 + + Plus sign 44 , , Comma 45 – - Hyphen 46 . . Period 47 / / ..
-
[AWS] AWS WAF 오탐 예외처리 (AWS WAF False Positive Mitigation)Back End/보안 2022. 12. 17. 16:50
이전 포스팅 (AWS WAF 적용 시, 주의해야할 Default 설정들) 에 이어 이번엔 Count 로 설정한 규칙들에 대해 예외처리 하는 작업에 대한 포스팅을 하고자 합니다. 예외처리 작업에 앞서 Count 규칙에 대해 왜 예외처리가 필요한지 알아 보겠습니다. Count 로 변경한것도 예외처리인데 또 예외처리를 해야한다고? 왜? WAF 적용 초기에 필자는 이러한 생각을 했었다. 정상적인 트래픽인데도 Block 될 가능성이 있다면 열어주면 되겠군. Count 설정을 하여 최소한으로만 열어주자. 코딩을 하다보면 최소 권한 원칙이라는 단어를 한번쯤은 들어보았을 것이다. 예시로 Java 에서 final 키워드를 일단 다붙여 둔 뒤, 필요할 때만 final 키워드를 제거하는 방식의 코딩기법이 대표적이다. 최소 ..
-
[AWS] AWS WAF 적용 시, 주의해야 할 Default 설정들Back End/AWS 2022. 12. 17. 16:46
AWS Immersion Day 에서 소개 받은 AWS WAF v2 를 적용하면서 Default 설정 때문에 필자가 직면했던 문제점들에 대한 포스팅입니다. 이전 포스팅 [AWS] 서비스에 WAF 적용하기 WAF 란? WAF(Web application firewall) 는 OSI 4레벨 layer 가 아닌 7레벨 Layer 에 적용되는 방화벽이다. WAF 라는 서비스를 사용하여 OWASP’s Top 10 Web Application Vulnerabilities 에 대한 방어를 어느정도 쉽게 구축할 developer-ping9.tistory.com 서론 보통 회사의 직원으로써 자사상품은 항상 좋은점만 소개한다. AWS WAF 도 그랬다... (그래서 홀렸다...) AWS 에서 제공하는 Rule 들로 WAF..
-
[AWS] CloudWatch Log Insight value counts (CloudWatch Log Insight 에서 groupby count 사용하기)Back End/AWS 2022. 12. 17. 15:19
CloudWatch LogInsight 에서 GroupBy 문을 사용하여 Count 를 할 수 있다. 예제 데이터와 쿼리문은 아래와 같다. Example Data From CloudWatch { "timestamp": 1670839795503, "rule": [ { "ruleGroupId": "AWS#AWSManagedRulesCommonRuleSet", "terminatingRule": null, "nonTerminatingMatchingRules": [ { "ruleId": "SizeRestrictions_BODY", "action": "COUNT", "overriddenAction": "BLOCK", "ruleMatchDetails": [] } ], } ], "uri": "/my/api", "arg..
-
[Spring Security] Filter 가 두번 실행될 때 (when filter get executed twice in Spring)Back End/서버 비용 2022. 12. 17. 15:07
Case 갑자기 내가 작성한 AuthenticationFilter 가 2번 실행되는 현상을 목격했다. 단순히 chain.doFilter() 를 기준으로 앞뒤로 실행되는 것이 아닌 정확히 모든 로직이 2번이 실행되는 것이다. Cause 원인은 아래 예제코드와 같이 Spirng Security 에 등록할 필터를 Bean 으로 등록하고, Security Config 에서 또 Filter 를 추가한 데 있었다. @Configuration @EnableWebSecurity(debug = false) @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) class SecurityConfig { @Bean fun filterChain( a..
-
[Spring Data JPA] DB 예약어 처리 (You have an error in your SQL syntax)Back End/Spring Data JPA 2022. 12. 9. 18:25
실 DB 에 JPA 를 붙이다보면 가끔 마주하는 현상이다. 에러 메세지도 모호하기 그저 없다. SQL 문법이 틀렸다, SQL을 실행할 수 없다. 컬럼이 없다. 등등 차라리 Keyword Constraint 에 걸렸다고 해주지.... 무튼 모호한 에러메세지라면 한번 쯤 DB Keyword 에 걸리지 않았는지 생각해보자. DB 예약어(Keyword) 를 위반한 엔티티 @Entity class UserAttendanceEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(columnDefinition = "INT") val id: Long? = null @Column(columnDefinition = "INT") val userIdx..