Dynamic SQL — 90%가 Injection 취약 #shorts #SAP #HANA
SAP HANA SQLScript의 EXEC 문은 강력한 기능이지만, 잘못 사용하면 SQL Injection 공격에 그대로 노출됩니다. 이 글은 실무에서 발생하는 취약 패턴을 재현하고, 안전하게 Dynamic SQL을 설계하는 방법을 단계별로 설명합니다. Dynamic SQL의 동작 원
SAP HANA SQLScript의 EXEC 문은 강력한 기능이지만, 잘못 사용하면 SQL Injection 공격에 그대로 노출됩니다. 이 글은 실무에서 발생하는 취약 패턴을 재현하고, 안전하게 Dynamic SQL을 설계하는 방법을 단계별로 설명합니다. Dynamic SQL의 동작 원
예외 처리를 빼먹으면 진짜 큰일 납니다 HANA SQLScript로 작성한 프로시저가 운영 환경에서 갑자기 멈추고, 수천 건의 SalesOrder가 절반만 처리된 채 롤백되는 상황을 본 적이 있나요? 이 글은 SQLScript의 예외 처리(Exception Handling) 메커니즘을
예외를 무시하면 생기는 실제 장애 사례 SAP HANA SQLScript에서 예외 처리를 생략한 채 프로시저를 운영에 올리면, 단순한 버그가 아니라 데이터 정합성 자체가 무너지는 사고로 이어집니다. 예를 들어 SalesOrder 헤더는 INSERT 됐지만 라인 아이템 INSERT 단계에
예외 처리, 왜 필수인가 HANA SQLScript 프로시저에서 오류가 발생해도 핸들러가 없으면 전체 트랜잭션이 즉시 중단됩니다. 호출 측에 오류가 그대로 노출되고, 이미 실행된 DML도 롤백될 수 있습니다. 실수 1 — 핸들러 없이 SELECT INTO 사용 -- 위험: ID 999가
이 글이 답하는 질문 CAP에서 외부 OData 서비스를 연결하려면? 서드파티 API를 CAP 쿼리처럼 쓸 수 있나? RemoteService 3단계 1. CDS에서 외부 서비스 선언 // srv/external.cds using { northwind } from '../srv/exte
이 글이 답하는 질문 UI5 ComboBox와 Select, 언제 어느 걸 써야 하나? 사용자가 새 값을 입력해야 한다면? 결정적 차이 1가지 ComboBox — 입력 가능 ComboBox는 드롭다운 목록에서 선택할 수도 있고, 리스트에 없는 값을 직접 타이핑해서 입력할 수 있습니다.
이 글이 답하는 질문 On-stack ABAP과 BTP ABAP, 실제로 어떤 코드 제약이 생기나? 클라우드 전환 시 가장 먼저 포기해야 할 것은? 진짜 차이 3가지 1. Released API만 허용 BTP ABAP(ABAP Cloud)은 SAP가 릴리즈 계약(C1/C2)을 공개한 클
SAP ABAP에서 DDIC View와 CDS View의 핵심 차이와 선택 기준을 정리합니다.
상관 서브쿼리, 왜 문제인가? ABAP OpenSQL에서 상관 서브쿼리(Correlated Subquery)는 외부 쿼리의 각 행마다 서브쿼리가 실행됩니다. 결과 행이 많을수록 DB 라운드트립이 기하급수적으로 늘어나 성능 병목의 주범이 됩니다. LATERAL JOIN이란? ABAP 7.
Principal Propagation이란? SAP BTP에서 외부 백엔드 시스템을 호출할 때, 현재 로그인한 사용자의 ID를 그대로 전달 하는 메커니즘입니다. 이게 없으면 기술 사용자(Technical User)로만 연결되어 감사 추적(Audit Trail)이 불가능 합니다. 왜 문제
BTP Generative AI Hub LLM 통합 시 실수 TOP 3 SAP BTP Generative AI Hub는 OpenAI, Anthropic, Google 등 다양한 LLM을 단일 API로 호출할 수 있게 해주는 서비스입니다. 하지만 비즈니스 앱에 통합할 때 흔히 발생하는 실
SQLScript에서 예외 처리를 빠뜨리면? HANA SQLScript로 프로시저를 작성할 때, 예외 처리를 생략하면 어떤 일이 벌어질까요? 트랜잭션 롤백 없이 데이터가 반쪽만 저장되거나, 오류 메시지 없이 프로세스가 멈추는 상황이 발생합니다. 실제 운영 환경에서는 디버깅조차 어려운 큰
외부 서비스가 죽으면? CAP Java에서 외부 REST API를 호출할 때 해당 서비스가 응답하지 않으면 스레드가 블로킹되고, 요청이 쌓여 결국 전체 서비스가 다운 됩니다. Circuit Breaker는 이 장애 전파를 막는 패턴입니다. Resilience4j 3가지 상태 Closed
에러 처리, 매번 따로 짜고 있진 않나요? CAP for Java 프로젝트가 커지면, 서비스마다 try-catch 반복하게 됩니다. Global Exception Handler 로 한 곳에서 처리하면 코드도 줄고, 클라이언트 응답도 일관됩니다. 핵심 구조 Spring의 @Controll
ABAP 개발자도 이제 AI 코파일럿 시대 SAP의 AI 어시스턴트 Joule 이 ABAP 개발 환경에 직접 통합되었습니다. ABAP Development Tools(ADT)나 SAP Build Code에서 코드를 짜다가 막히면, Joule에게 바로 물어볼 수 있습니다. 어떤 걸 도와주
MTA(Multi-Target Application)란? SAP BTP에서 여러 모듈(백엔드, 프론트엔드, DB)을 하나의 패키지로 묶어 배포하는 표준 방식입니다. 핵심은 mta.yaml 파일 한 장입니다. mta.yaml 기본 구조 _schema-version: "3.1" ID: my
왜 Destination Service인가? CAP 프로젝트에서 외부 URL을 코드에 직접 박으면 환경마다 배포 설정을 바꿔야 하고 자격증명이 노출됩니다. BTP Destination Service를 쓰면 URL·인증 정보를 Cockpit에서 관리하고 코드는 이름만 참조합니다. mta.
CSV Seed란? CAP for Node.js 프로젝트에서 db/data/ 폴더에 CSV 파일을 놓으면 cds deploy 또는 cds run 시 자동으로 초기 데이터를 로드합니다. 별도 SQL 스크립트나 Migration 파일 없이 테스트 데이터와 마스터 데이터를 빠르게 투입할 수
왜 S/4HANA 마이그레이션이 실패할까? S/4HANA 전환 프로젝트의 60% 이상이 예상보다 지연되거나 비용이 초과됩니다. 문제는 기술이 아니라 사전 준비 부족입니다. 마이그레이션 전 반드시 확인해야 할 3가지 체크포인트를 정리했습니다. 체크포인트 1: 커스텀 코드 분석 ECC에서
이 글이 답하는 질문 SQLScript가 일반 SQL과 뭐가 다른가? HANA Procedure를 언제 써야 하나? TABLE TYPE은 왜 별도로 정의하는가? 직접 해보기 1. Table Type 정의 CREATE TYPE tt_employee AS TABLE ( empId NVARC