• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 1. 일반적인 보안 문제
    1. 보안 지침
    2. 비밀번호를 안전한 상태로
    3. 공격자에 대한 MySQL의 안전한 상태 유지
    4. 보안 관련 mysqld 옵션 및 변수
    5. MySQL을 일반 사용자로 실행하는 방법
    6. LOAD DATA LOCAL 보안 문제
    7. 클라이언트 프로그램의 보안 지침
    2. MySQL 권한 시스템
    3. MySQL 사용자 계정 관리
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

6.1.6 LOAD DATA LOCAL 보안 문제

LOAD DATA 명령문은 서버 호스트에 배치되어있는 파일을로드하거나 LOCAL 키워드가 지정된 경우, 클라이언트 호스트에 배치되어있는 파일을로드 할 수 있습니다.

LOAD DATA 문 LOCAL 버전 지원 정보는 보안에 대한 잠재적 인 문제가 2 개 있습니다.

  • 클라이언트 호스트에서 서버 호스트로 파일 전송은 MySQL 서버가 시작됩니다. 이론적으로는 패치 된 서버를 구축하여 LOAD DATA 문에서 클라이언트에 의해 지정된 파일이 아닌 서버 선택 파일을 전송하도록 서버가 클라이언트 프로그램에 지시하도록 할 수 있습니다 . 그러한 서버는 클라이언트 사용자가 읽기 권한을 가진 클라이언트 호스트의 모든 파일에 액세스 할 수 있습니다.

  • 클라이언트가 Web 서버로부터 접속하는 Web 환경에서 사용자는 LOAD DATA LOCAL 을 사용하여 Web 서버 프로세스가 읽기 권한을 가진 모든 파일을 읽을 수 있습니다 (사용자가 SQL Server에 대한 모든 명령을 실행할 수있는 경우). 이 환경에서 MySQL 서버를 기준으로했을 때 클라이언트는 실제로는 Web 서버로서, Web 서버에 연결하는 사용자에 의해 실행되는 원격 프로그램은 없습니다.

이러한 문제를 해결하기 위해 MySQL 3.23.49 및 MySQL 4.0.2 (Windows에서는 4.0.13) 이후에 LOAD DATA LOCAL 처리 방법이 변경되었습니다.

  • 기본적으로 바이너리 배포판에있는 모든 MySQL 클라이언트와 라이브러리는 -DENABLED_LOCAL_INFILE=1 옵션으로 컴파일되어 MySQL 3.23.48 이전과의 호환성을 유지하고 있습니다.

  • MySQL을 소스에서 빌드했지만 -DENABLED_LOCAL_INFILE=1 옵션을 지정하여 CMake를 호출하지 않는 경우, LOAD DATA LOCAL 은 mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0) 을 호출하도록 명시 적으로 기술 된 경우를 제외하고 어느 클라이언트에서 사용할 수 없습니다. 섹션 23.8.7.49 "mysql_options ()" 를 참조하십시오.

  • --local-infile=0 옵션을 지정해 mysqld를 시작함으로써 서버 측에서 모든 LOAD DATA LOCAL 문을 해제 할 수 있습니다.

  • mysql 명령 행 클라이언트의 경우, --local-infile[=1] 옵션을 지정하여 LOAD DATA LOCAL 을 활성화하거나 --local-infile=0 옵션을 지정하여 이것을 무효로합니다. mysqlimport의 경우 로컬 데이터 파일의로드는 기본적으로 꺼져 있으며, --local 또는 -L 옵션을 사용하여이를 활성화합니다. 어떤 경우에도 로컬로드 조작을 제대로 사용하려면 서버가이 조작을 허가하고있는 것이 필요.

  • 옵션 파일에서 [client] 그룹을 읽을 수있는 Perl 스크립트 또는 다른 프로그램에서 LOAD DATA LOCAL 을 사용하는 경우, local-infile=1 옵션을 그 그룹에 추가 할 수 있습니다. 그러나 local-infile 을 인식하지 못하는 프로그램에서 문제가 발생하지 않도록하기 위해 loose- 프리픽스를 사용하여이를 지정합니다.

     [client]
     loose-local-infile = 1
    
  • 서버 또는 클라이언트 중 하나에서 LOAD DATA LOCAL 가 무효 인 경우, 그런 문을 발행하고자하는 클라이언트는 다음과 같은 오류 메시지가 나타납니다.

     ERROR 1148 : The used command is not allowed with this MySQL version
    


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved