입력하신 문자열은 SQL 인젝션 공격 페이로드로 보입니다. 구성과 동작을 요약하면 다음과 같습니다.
- 원문: -1' OR 2+940-940-1=0+0+0+1 --
- 의미:
- "-1'"는 보통 문자열 리터럴을 닫기 위해 사용됩니다(예: WHERE id = '-1' ...).
- 그 뒤에 오는 OR 절은 조건식을 삽입합니다: 2+940-940-1 = 0+0+0+1
- 좌변을 계산하면 2+940-940-1 = 1, 우변은 0+0+0+1 = 1 이므로 조건은 참(True)입니다.
- "--"는 SQL에서 남은 부분을 주석 처리하여 이후 원래 의도된 조건을 무력화합니다.
- 결과: 원래의 WHERE 절이나 인증 검사에 이 페이로드가 삽입되면 조건이 항상 참이 되어 인증 우회나 데이터 노출 등의 의도된 악용이 가능해집니다.
권장 대응 및 완화책:
- 항상 파라미터화된 쿼리(Prepared statements / parameterized queries)를 사용하세요. 문자열을 직접 연결하지 마십시오.
- 입력 검증(허용된 형식 화이트리스트)과 길이 제한을 적용하세요.
- 데이터베이스 계정에 최소 권한 원칙을 적용하세요(읽기 전용 등 필요 권한만 부여).
- 오류 메시지에 민감한 정보를 노출하지 않도록 일반화된 에러 처리 및 로깅을 사용하세요.
- 웹 애플리케이션 방화벽(WAF)을 도입해 의심스러운 페이로드를 차단하는 것을 고려하세요.
- 정기적으로 보안 테스트(정적 분석, 동적 취약점 스캐닝, 펜테스트)를 수행하세요.
위 설명대로 이 입력은 조건을 항상 참으로 만들어 쿼리 논리를 우회하려는 전형적인 SQL 인젝션 시도입니다.