드루팔
1. 개요
드루팔은 드리 부이타르트가 개발한 오픈 소스 콘텐츠 관리 시스템(CMS)으로, 2001년 오픈 소스 프로젝트가 되었다. 2004년 하워드 딘의 선거 캠페인 웹사이트 구축에 사용되며 주목받았으며, 이후 다양한 기업과 기관에서 사용되고 있다. 드루팔은 모듈과 테마를 통해 기능을 확장할 수 있으며, 보안 업데이트와 커뮤니티 지원을 제공한다. 2022년에는 헤드리스 CMS 아키텍처를 수용하기 시작했으며, 2023년 10월 현재 최신 버전은 10.1.5이다.
이미지 준비중입니다.
이미지 준비중입니다.
| 개발자 | 드루팔 커뮤니티 |
|---|---|
| 저자 | 드리스 보이타르트(Dries Buytaert) |
| 최초 릴리스 | 2001년 1월 15일 |
| 저장소 | 드루팔 저장소 |
| 프로그래밍 언어 | PHP, 심포니 사용 |
| 운영 체제 | 유닉스 계열, 윈도우 |
| 플랫폼 | 웹 플랫폼 |
| 크기 | 140MB (압축 해제된 드루팔 9.1 코어) |
| 종류 | 콘텐츠 관리 프레임워크 콘텐츠 관리 시스템 블로그 소프트웨어 오픈 소스 지식 관리 |
| 라이선스 | GPL-2.0-or-later |
| 웹사이트 | 드루팔 공식 웹사이트 |
| 설명 | 웹 콘텐츠 관리 시스템 |
|---|
-
PHP 프레임워크 -
실버스트라이프 CMS
실버스트라이프 CMS는 PHP로 제작된 오픈 소스 콘텐츠 관리 시스템으로, 웹사이트 및 웹 애플리케이션을 개발하고 관리하는 데 사용되며, MVC 패턴과 Sapphire ORM 프레임워크를 활용하여 사용자 친화적이고 확장 가능한 플랫폼을 제공한다. -
PHP 프레임워크 -
코드이그나이터
코드이그나이터는 모델-뷰-컨트롤러(MVC) 아키텍처 기반의 PHP 웹 애플리케이션 프레임워크이며, 가볍고 빠른 성능과 다양한 기능을 제공하고 2006년에 출시되어 MIT 라이선스를 채택했다. -
웹 프레임워크 -
실버스트라이프 CMS
실버스트라이프 CMS는 PHP로 제작된 오픈 소스 콘텐츠 관리 시스템으로, 웹사이트 및 웹 애플리케이션을 개발하고 관리하는 데 사용되며, MVC 패턴과 Sapphire ORM 프레임워크를 활용하여 사용자 친화적이고 확장 가능한 플랫폼을 제공한다. -
웹 프레임워크 -
코드이그나이터
코드이그나이터는 모델-뷰-컨트롤러(MVC) 아키텍처 기반의 PHP 웹 애플리케이션 프레임워크이며, 가볍고 빠른 성능과 다양한 기능을 제공하고 2006년에 출시되어 MIT 라이선스를 채택했다. -
GPL 라이선스 소프트웨어 -
F-Droid
F-Droid는 2010년 키어런 걸트니엑스가 설립한 안드로이드용 자유 소프트웨어 앱 저장소로, 구글 플레이 스토어에 없는 자유/오픈 소스 소프트웨어 앱을 제공하며 감시, 검열 저항, 개인 정보 보호에 중점을 둔 클라이언트 앱, 저장소 관리 도구, 웹사이트 생성기 등의 하위 프로젝트로 구성된다. -
GPL 라이선스 소프트웨어 -
MySQL
MySQL은 1994년 스웨덴에서 개발을 시작하여 현재 오라클에 인수된 관계형 데이터베이스 관리 시스템으로, 오픈 소스 및 상업용 에디션을 제공하며 ANSI SQL 99 표준을 지원하고 다양한 스토리지 엔진과 프로그래밍 언어 API를 지원한다.
2. 역사
드리 부이타르트(Dries Buytaert)가 게시판으로 시작한 드루팔은 2001년 오픈 소스 프로젝트로 발전했다. 2004년 미국 대통령 선거에서 하워드 딘 후보의 웹사이트 구축에 사용되면서 널리 알려지기 시작했다.
2007년부터 2008년까지 140만 건 이상 다운로드될 정도로 성장했으며, 커뮤니티 주도로 개발되며 발전해왔다. 주요 버전 출시 내용은 하위 섹션 "주요 버전 출시"에서 확인할 수 있다.
2022년 10월, 드루팔은 프런트 엔드를 핵심 시스템 외부에서 관리할 수 있도록 하는 오픈 소스 헤드리스 CMS 가속기를 출시했다.
2.1. 초기 개발
드리스 바이타르트가 앤트워프 대학교 재학 중 기숙사 친구들과 소통하기 위한 게시판으로 드루팔을 개발했다. 졸업 후, 바이타르트는 이 사이트를 Drop.org라는 이름으로 일반 인터넷에 공개했다.
드루팔(Drupal)이라는 이름은 "물방울"을 의미하는 네덜란드어 단어 druppel의 영어식 표현이다. 이 이름은 현재는 사용되지 않는 Drop.org에서 유래되었으며, 해당 코드가 점차 드루팔(Drupal)로 발전했다. 바이타르트는 커뮤니티적인 측면을 강조하기 위해 "dorp"(네덜란드어로 "마을")라고 사이트 이름을 지으려 했지만, 도메인 이름을 확인할 때 오타를 냈고, 그 오류가 더 나은 소리를 낸다고 생각했다.
드루팔은 2001년에 오픈 소스 프로젝트가 되었다.
2.2. 오픈 소스화 및 성장
드리 부이타르트(Dries Buytaert)가 게시판으로 작성한 드루팔은 2001년에 오픈 소스 프로젝트가 되었다. 드루팔이라는 이름은 "물방울"을 의미하는 네덜란드어 단어 druppel의 영어식 표현에서 유래되었다.
2003년 하워드 딘(Howard Dean)의 2004년 미국 대통령 선거 캠페인 웹사이트 "DeanSpace" 구축에 드루팔이 사용되면서 큰 주목을 받았다. DeanSpace는 드루팔의 오픈 소스 공유를 사용하여 약 50개의 비공식 친 딘 웹사이트 네트워크를 지원했으며, 이를 통해 사용자는 서로, 그리고 캠페인과 소통할 수 있었다.
딘의 캠페인 종료 후, 그의 웹 팀 구성원들은 2004년 7월 CivicSpace Labs를 설립하여 드루팔 기술을 개발하고 배포하는 최초의 회사가 되었다. 이후 다른 회사들도 드루팔 개발을 전문으로 하기 시작했다.
2007년 7월부터 2008년 6월까지 드루팔 소프트웨어는 140만 건 이상 다운로드되었으며, 이는 전년 대비 약 125% 증가한 수치이다. 2013년까지 드루팔 웹사이트에는 드루팔 관련 서비스를 제공하는 수백 개의 공급업체가 나열되었다.
드루팔은 커뮤니티 주도로 개발되었으며, 여러 Packt 오픈 소스 CMS 어워드를 수상했고, Webware 100을 3회 연속 수상했다.
2.3. 주요 버전 출시
드루팔 6은 2008년 2월 13일에 출시되었다. 2009년 3월 5일, 드리 부이타르트는 드루팔 7에 대한 코드 프리즈를 2009년 9월 1일 기준으로 발표했다. 드루팔 7은 2011년 1월 5일에 여러 국가에서 출시 기념 행사와 함께 공개되었다. 그 이후, 드루팔 5에 대한 지원은 중단되었고, 드루팔 7과 드루팔 6만 유지보수되었다.
드루팔 7의 지원 종료는 원래 2021년 11월로 예정되었으나, 코로나19 팬데믹의 영향과 지속적인 사용을 고려하여 2023년 11월 1일로 연기되었으며, 매년 검토될 예정이었다. 2023년 6월, 드루팔 7의 지원 종료는 다시 한번 연장되어 현재 2025년 1월 5일로 설정되었다. 이는 드루팔 7의 마지막 연장이 될 것으로 예상된다.
2.4. 헤드리스 CMS로의 전환
드루팔은 헤드리스 CMS 아키텍처를 수용하여 콘텐츠 관리 시스템의 변화를 이끌고 있다. 이 접근 방식은 프런트엔드(표시 및 게시)와 백엔드(콘텐츠)를 분리하여 콘텐츠 전달에 더 큰 유연성과 혁신을 가능하게 한다. 특히, 워드프레스의 오랜 경쟁자인 드루팔은 헤드리스 방식에 많은 투자를 해왔다. 드루팔의 창시자인 드리스 바위타르트는 아쿠이아의 새로운 오픈 소스 헤드리스 스타터 키트에 대해 언급했는데, 이는 드루팔 기반의 아쿠이아 CMS에 필수적이다. 이 키트를 통해 기업은 웹 브라우저뿐만 아니라 디지털 간판, 웨어러블 기기, 챗봇, 모바일 애플리케이션, 키오스크 등 다양한 디지털 매체에 콘텐츠를 제공할 수 있다.
3. 핵심 기능
드루팔 코어는 드루팔의 기본 요소로, 일반적인 드루팔 전용 라이브러리와 부트스트랩 프로세스를 포함한다. 시스템 모듈 자체를 포함한 모든 다른 기능은 드루팔 모듈로 정의된다. 드루팔 8부터는 일부 Symfony 라이브러리를 드루팔 코어에 채택했다.
웹사이트 콘텐츠는 관리자의 재량에 따라 등록된 사용자나 익명 사용자가 기여할 수 있으며, 다양한 기준(날짜, 카테고리, 검색 등)에 따라 방문자가 접근할 수 있다. 또한, 콘텐츠를 분류하고 쉽게 접근할 수 있도록 키워드로 태그할 수 있는 계층적 분류 시스템을 갖추고 있다.
드루팔은 대부분의 CMS에 공통적인 기본 기능을 갖추고 있으며, 여기에는 개별 사용자 계정 등록 및 유지 관리, 관리 메뉴, RSS 피드, 사용자 정의 가능한 레이아웃, 유연한 계정 권한, 로그 기능, 블로그 작성 시스템, 포럼 등이 포함된다. 이러한 기능을 통해 전형적인 기업 사이트(brochureware)에서 인터랙티브한 커뮤니티 사이트까지 구축할 수 있다.
드루팔은 버전 단위의 코어 기능 업데이트에 대해 상세한 변경 이력을 유지하고 있다.
3.1. 코어 모듈
드루팔 코어는 관리자가 웹사이트의 기능을 확장하기 위해 활성화할 수 있는 모듈을 포함한다.
드루팔 코어 배포판은 다음과 같은 여러 기능을 제공한다.
| 기능 |
|---|
| 접근 통계 및 로깅 |
| 고급 검색 |
| 책, 댓글 및 포럼 |
| 성능 향상을 위한 캐싱, 지연 로딩 콘텐츠(BigPipe 사용) 및 기능 제한 |
| 사용자 정의 콘텐츠 유형 및 필드, 콘텐츠 목록을 생성, 관리 및 표시하는 사용자 인터페이스 |
| 설명적인 URL |
| 다단계 메뉴 시스템 |
| 다중 사이트 지원 |
| 다중 사용자 콘텐츠 생성 및 편집 |
| RSS 피드 및 피드 수집기 |
| 보안 및 새로운 릴리스 업데이트 알림 |
| 사용자 프로필 |
| 다양한 접근 제어 제한(사용자 역할, IP 주소, 이메일) |
| 워크플로우 도구(트리거 및 액션) |
3.2. 코어 테마
드루팔은 드루팔 사이트의 "모습과 느낌"을 사용자 정의할 수 있는 코어 테마를 포함하며, 예를 들어 가랜드(Garland)와 바르틱(Bartik)이 있다.
드루팔 코어 5.0부터 도입된 "Color" 모듈은 웹 브라우저의 인터페이스를 통해 특정 테마의 색상을 변경할 수 있도록 한다. 이 기능은 프로그래밍 지식이 없는 일반 사용자도 더 높은 수준의 사용자 정의를 할 수 있도록 추가되었다.
3.3. 다국어 지원
드루팔은 2022년 9월 기준으로 영어(기본)를 포함하여 100개 이상의 언어를 지원한다. 아랍어, 페르시아어, 히브리어와 같이 오른쪽에서 왼쪽으로 쓰는 언어도 지원한다.
드루팔 현지화는 GNU gettext를 기반으로 한다.
3.4. 자동 업데이트 알림
드루팔은 모듈, 테마 또는 드루팔 코어의 새 버전에 대해 관리자에게 자동으로 알림을 보낼 수 있다. 보안 업데이트가 릴리스된 후 신속하게 업데이트하는 것이 중요하다.
2014년 10월 15일, SQL 주입 취약점이 발표되었고 업데이트가 릴리스되었다. 2주 후 드루팔 보안 팀은 발표 후 7시간 이내에 업데이트되지 않은 모든 사이트가 자동 공격에 의해 손상되었다고 가정하고 모든 사람이 조치를 취해야 한다고 설명하는 권고 사항을 발표했다. 따라서 이러한 업데이트를 신속하게 적용하는 것이 매우 중요하며, 이 프로세스를 더 쉽게 만들기 위해 drush와 같은 도구를 사용하는 것이 좋다.
드루팔 버전 6.0부터는 기증된 모듈이나 테마, 또는 드루팔 코어 자체의 새로운 버전이 이용 가능하게 되면, 드루팔이 자동으로 관리자에게 알림을 보내 설치된 드루팔을 최신 기능과 보안 수정 사항으로 최신 상태로 유지하는 데 도움을 준다.
3.5. 데이터베이스 추상화
드루팔은 SQL 쿼리 작성 없이 데이터베이스 작업을 수행할 수 있도록 데이터베이스 추상화 계층을 제공한다. PHP 데이터 객체(PHP Data Objects)를 사용하여 데이터베이스를 추상화하며, SQLite, MySQL, PostgreSQL 등 다양한 데이터베이스를 지원한다. 마이크로소프트는 자사의 SQL 서버용 데이터베이스 드라이버를 작성했다.
3.6. 접근성
드루팔 7이 출시된 이후, 웹 접근성은 드루팔 커뮤니티에서 지속적으로 개선되어 왔습니다. 드루팔은 장애가 있는 사용자를 위해 접근 가능한 사이트를 구축하기에 좋은 프레임워크입니다. 왜냐하면 많은 모범 사례가 드루팔 코어에 통합되었기 때문입니다.
드루팔 8은 접근 가능한 제작 환경과 제작자가 보다 접근 가능한 콘텐츠를 제작하도록 지원하는 저작 도구 접근성 지침 (ATAG) 2.0 지침에서 많은 개선 사항을 보였습니다.
접근성 팀은 접근성 장벽을 식별하고 해결하며 커뮤니티 내에서 인지도를 높이는 작업을 수행하고 있습니다.
드루팔 8은 WAI-ARIA를 통해 풍부한 웹 애플리케이션에 대한 훌륭한 시맨틱 지원을 제공합니다. 방문자와 관리자 측면 모두에서 많은 개선이 이루어졌으며, 특히 다음과 같습니다.
* 드래그 앤 드롭 기능
* 향상된 색상 대비 및 강도
* 코어 테마에 건너뛰기 탐색 추가
* 입력 양식에 기본적으로 레이블 추가
* 초점 시 텍스트를 숨기고 노출하는 일관된 방법을 사용하여 CSS display:none 수정
* Drupal.announce를 사용하여 ARIA 실시간 영역에 대한 지원 추가
* 더 나은 키보드 탐색을 지원하기 위해 TabbingManager 추가
커뮤니티는 또한 드루팔 8의 코어 문제에 대한 접근성 게이트를 추가했습니다.
4. 확장성
드루팔 코어는 모듈형으로, 훅과 콜백 시스템을 정의하며, 이는 API를 통해 내부적으로 접근된다. 이러한 설계 덕분에 서드 파티가 개발한 모듈과 테마는 드루팔 코어의 코드를 변경하지 않고도 드루팔의 기본 동작을 확장하거나 재정의할 수 있다.
드루팔은 코어 파일과 기여된 모듈 및 테마를 분리하여 유연성과 보안을 높인다. 관리자는 사이트의 사용자 정의를 덮어쓰지 않고 새로운 릴리스로 깔끔하게 업그레이드할 수 있다. 드루팔 커뮤니티에는 "코어는 절대 해킹하지 마세요"라는 말이 있는데, 이는 사이트 개발자가 코어 파일을 변경하지 않도록 강력하게 권고하는 내용이다.
4.1. 모듈
드루팔 코어는 모듈형으로, 훅과 콜백 시스템을 정의하며, 이는 API를 통해 내부적으로 접근된다. 이러한 설계 덕분에 서드 파티가 개발한 모듈과 테마는 드루팔 코어의 코드를 변경하지 않고도 드루팔의 기본 동작을 확장하거나 재정의할 수 있다.
드루팔은 코어 파일과 기여된 모듈 및 테마를 분리한다. 이는 유연성과 보안을 높이며, 관리자가 사이트의 사용자 정의를 덮어쓰지 않고 새로운 릴리스로 깔끔하게 업그레이드할 수 있도록 한다. 드루팔 커뮤니티에는 "코어는 절대 해킹하지 마세요"라는 말이 있는데, 이는 사이트 개발자가 코어 파일을 변경하지 않도록 강력하게 권고하는 내용이다.
기여 모듈은 이미지 갤러리, 사용자 정의 콘텐츠 유형 및 콘텐츠 목록, WYSIWYG 편집기, 비공개 메시지, 타사 통합 도구, BPM 포털과의 통합, 등과 같은 추가 또는 대체 기능을 제공한다. 2019년 12월 기준으로 드루팔 웹사이트에는 44,000개 이상의 무료 모듈이 있다.
가장 일반적으로 사용되는 기여 모듈은 다음과 같다:
* 콘텐츠 구성 키트(CCK): 사이트 관리자가 데이터베이스 스키마를 확장하여 콘텐츠 유형을 동적으로 생성할 수 있도록 한다. "콘텐츠 유형"은 정보의 종류를 설명한다. 콘텐츠 유형에는 이벤트, 초대장, 리뷰, 기사 및 제품이 포함되지만 이에 국한되지는 않는다. CCK 필드 API는 드루팔 7의 드루팔 코어에 있다.
* Views: 사이트 방문자에게 콘텐츠를 데이터베이스 추상화 시스템을 통해 검색하고 표시하는 것을 용이하게 한다. 기본 보기 기능이 드루팔 8의 코어에 추가되었다.
* Panels: 사이트 관리자가 사이트를 시각적으로 디자인할 수 있도록 하는 드래그 앤 드롭 레이아웃 관리자.
* Rules: 반복적인 이벤트에 따라 조건부로 실행되는 작업.
* Features: 기능(엔티티, 보기, 필드, 구성 등)을 사용자 정의 모듈로 캡처하고 관리할 수 있도록 한다.
* Context: 드루팔 기능을 조건부로 활성화할 수 있는 사이트 섹션의 정의를 허용한다.
* Media: 사진 업로드 및 미디어 관리를 더 쉽게 만든다.
* Services: 드루팔에 대한 API를 제공한다.
4.2. 테마
드루팔의 테마는 웹사이트 디자인(룩앤필)을 변경한다. 2,800개 이상의 무료 테마가 제공된다. 드루팔 테마는 표준화된 형식을 사용하며, PHPTemplate 엔진 또는 XTemplate 엔진으로 작성된 테마가 많다. 일부 템플릿은 하드 코딩된 PHP를 사용하기도 한다. 드루팔 8 이후 버전에서는 Twig 템플릿 엔진을 사용한다.
드루팔 테마 시스템은 템플릿 엔진을 활용하여 HTML/CSS를 PHP와 더욱 분리한다. 'Devel'이라는 드루팔 기여 모듈은 개발자와 테마 제작자에게 페이지 빌드에 대한 GUI 정보를 제공한다.
드루팔 웹사이트의 커뮤니티 기여 테마는 GPL 라이선스 하에 배포된다.
4.3. 배포판
배포판은 특정 목적을 위해 미리 구성된 드루팔 패키지이다. 여기에는 모듈, 테마 및 관련 구성 설정이 포함된다. 예를 들어, 배포판을 통해 드루팔을 뉴스 사이트나 온라인 상점 대신 "브로셔" 사이트로 구성할 수 있다.
배포판을 사용하면 타사 기여 모듈을 직접 찾아서 설치하거나 구성 설정을 조정할 필요 없이 새로운 드루팔 사이트를 빠르게 구축할 수 있다는 장점이 있다.
5.1. 표현-추상-제어 (PAC) 아키텍처
드루팔은 표현 추상 제어(PAC) 아키텍처를 기반으로 한다.
메뉴 시스템은 컨트롤러 역할을 한다. 단일 소스(HTTP GET 및 POST)를 통해 입력을 받아 적절한 헬퍼 함수로 요청을 라우팅하고, 추상화 계층(노드 및 드루팔 5부터는 양식)에서 데이터를 가져온 다음 필터를 거쳐 표현(테마 시스템)을 생성한다.
또한, 공통 캔버스(page.tpl.php)로 데이터를 푸시하는 블록 형태의 여러 병렬 PAC 에이전트도 가지고 있다.
6. 커뮤니티
드루팔은 사용자와 개발자로 구성된 대규모 커뮤니티를 보유하고 있다. Drupal.org에는 30만 개 이상의 사용자 계정이 생성되었으며, 2,000명 이상이 개발자 계정에 등록했다.
드루팔 관련 커뮤니티 활동으로는 포럼, 메일링 리스트, 토론 그룹이 활발하게 운영되고 있으며, Freenode 네트워크에서 몇 개의 IRC 채널도 운영하고 있다.
6.1. 활동 및 지원
드루팔.org는 드루팔의 기능을 개선하기 위한 새로운 업데이트를 제공함으로써 적극적인 커뮤니티 지원을 제공하는 많은 사용자 및 개발자 커뮤니티를 가지고 있다. 2017년 1월 기준으로 105,400명 이상의 사용자가 활발하게 기여하고 있다.
반기별 드루팔콘(DrupalCon) 컨퍼런스는 북미, 유럽, 아시아에서 번갈아 개최된다. 드루팔콘 참석자는 2008년 8월 세게드에서 500명에서 2014년 6월 텍사스주 오스틴에서 3,700명 이상으로 증가했다.
"드루팔 캠프"(DrupalCamp)로 알려진 소규모 행사가 전 세계적으로 연중 열린다. 연례 플로리다 드루팔캠프는 지역 비영리 단체를 위한 원인을 위한 코딩을 위해 사용자들을 모으고, 연례 GLADCamp (Greater Los Angeles Drupal 캠프) 행사인 원인을 위한 코더도 마찬가지다.
드루팔 커뮤니티는 또한 전 세계 여러 장소에서 모임이라고 불리는 전문적이고 준전문적인 모임을 조직한다.
drupal.org에는 언어별 지원을 제공하는 30개 이상의 국가별 커뮤니티가 있다.
6.2. 미디어
드루팔과 관련된 여러 가지 형태의 미디어가 있다. 가장 인기 있는 것은 팟캐스트이다. https://www.drupaleasy.com/podcast DrupalEasy, https://www.talkingdrupal.com/ TalkingDrupal, https://www.lullabot.com/podcasts/lullabot-podcast Lullabot Podcast는 모두 수백 개의 에피소드와 수천 명의 정기 청취자를 보유하고 있다.
최근에는 https://www.thedroptimes.com/ The Drop Times가 드루팔 커뮤니티와 관련된 기사를 강조하는 드루팔 중심의 미디어 매체가 되었다.
7. 보안
드루팔은 보안 취약점을 지속적으로 관리하고, 사용자에게 최신 정보를 제공하기 위해 노력한다. 2008년 1월부터 5월까지 드루팔 코어 및 사용자가 기증한 모듈에서 여러 보안 취약점이 발견되어 수정되었다.
7.1. 보안 정책
드루팔은 보안 취약점이 발견되면 수정 사항을 발표한다. 드루팔 사이트 관리자는 업데이트 상태 모듈(드루팔 6)이나 업데이트 관리자(드루팔 7)를 통해 새로운 릴리스에 대한 알림을 자동으로 받을 수 있다.
드루팔은 보안 공지 메일링 리스트, 모든 보안 권고 기록, 보안 팀 홈페이지, 최신 보안 권고 사항이 담긴 RSS 피드를 제공한다.
2014년 10월, 드루팔은 드루팔 7의 SQL 주입 버그(드루파게돈)와 관련하여 "매우 심각한" 보안 권고를 발표했다. 드루팔 7.32로 업그레이드하면 취약점이 수정되지만, 이미 백도어에 의해 손상된 사이트는 해커가 설치한 백도어가 제거되지 않는다. 공격은 취약점 발표 직후 시작되었으며, 발표 후 몇 시간 안에 패치되지 않은 사이트는 손상된 것으로 간주해야 한다.
2018년 3월, 'Drupalgeddon2'라고도 불리는 CVE-2018-7600 취약점에 대한 패치가 릴리스되었다. 이 버그는 권한이 없는 원격 공격자가 드루팔 6, 7, 8 사이트를 완전히 제어할 수 있게 한다. 드루팔 6은 2016년 2월 24일에 지원이 종료되어 공식적인 보안 업데이트를 받지 않지만, 일부 유료 장기 서비스 공급업체에서 확장 지원을 제공한다.
2019년 12월 23일, 드루팔은 임의 파일 업로드 결함을 패치했다. 이 결함은 드루팔 8.8.1 이전의 8.8.x 및 8.7.11 이전의 8.7.x에 영향을 미치며, 드루팔은 이 취약점을 중간 수준으로 심각하다고 평가했다.
2022년 9월, 드루팔은 드루팔 9.3 및 9.4 사용자를 위한 Twig의 심각한 취약점에 대한 두 가지 보안 권고를 발표했다. 또한, 액세스 우회 문제를 해결하기 위해 S3 파일 시스템에 대한 패치를 발표했다.
2023년 1월, 드루팔은 드루팔 코어와 세 개의 플러그인에서 네 가지 취약점을 해결하기 위한 소프트웨어 업데이트를 발표했다.
7.2. 주요 보안 취약점
드루팔은 수정 사항이 릴리스될 때 각 보안 취약점의 특성을 발표한다. 드루팔 사이트 관리자는 업데이트 상태 모듈(드루팔 6) 또는 업데이트 관리자(드루팔 7)를 통해 새로운 릴리스에 대한 자동 알림을 받을 수 있다. 또한, 드루팔은 보안 공지 메일링 리스트, 모든 보안 권고의 기록, 보안 팀 홈페이지, 최신 보안 권고 사항이 포함된 RSS 피드를 유지 관리한다.
다음은 드루팔의 주요 보안 취약점 목록이다.
8. 사용 사례
드루팔은 다양한 분야의 기관 및 웹사이트에서 사용되고 있다.
8.1. 한국
* KLDP
* 미국 백악관 [http://www.whitehouse.gov/ 웹사이트]
* 한국 전쟁기념관 [https://web.archive.org/web/20140714182644/http://wmk.kr/ 웹사이트]
* 서울대학교 학과 페이지
8.2. 해외
드루팔은 여러 유명 기관 및 기업에서 사용되고 있다. 미국의 백악관 웹사이트와 We the People, NASA, 옥스퍼드, 프린스턴 대학교, 컬럼비아 대학교 등에서 사용된다.
또한, 유럽 위원회, 유니세프, 올림픽, 스미스소니언 협회와 같은 국제기구 및 기관에서도 드루팔을 활용하고 있다.
NBC, Taboola, Patch, 노키아, Wish, 퀄컴, AMD (Advanced Micro Devices), TSMC (Taiwan Semiconductor Manufacturing Company Limited), 레인포레스트 얼라이언스, VISA, 유니버설 뮤직 그룹, 화이자, 존슨앤드존슨 등 다양한 기업에서도 드루팔을 사용한다.
9. 비판
드루팔은 절차적 프로그래밍을 주로 사용하고 객체 지향 프로그래밍(OOP)이 부족하여 여러 문제가 발생한다는 비판을 받았다. 그러나 버전 7부터 PHP5의 OOP를 활용하기 시작했고, 버전 8에서는 Symfony 라이브러리를 도입하여 이러한 문제를 개선했다.
9.1. 객체 지향 프로그래밍 (OOP) 부족 (과거)
드루팔은 주로 객체 지향 프로그래밍(OOP)이 아닌 절차적 프로그래밍을 사용한다. 드루팔은 몇 가지 OOP의 특징에 근접해 있지만, OOP 자체가 없기 때문에 다음과 같은 문제가 발생한다.
* 기초가 되는 프로그래밍 언어 시스템에 의해 강화된 캡슐화가 없다. 이는 개인 데이터 사용을 배제하고, 네임스페이스 분리가 없는 구현을 초래한다. 네임스페이스 분리가 없기 때문에, 설치된 모듈이나 테마의 모든 함수나 변수가 다른 설치된 모듈, 설치된 테마, 또는 드루팔 코어의 다른 함수나 변수의 이름과 동일한 경우, "죽음의 흰 화면"()을 포함한 심각한 오류를 일으킬 수 있다.
* 객체 상속이 "약하기" 때문에 코드 재사용이 그다지 효율적이지 않으며, 다형성은 렌더링 계층에서만 근접할 수 있다.
* 버전 8에서 코어 백엔드에 객체 지향의 Symfony 라이브러리가 도입되었다.
드루팔 옹호론자들은 PHP의 OOP 언어 기능이 직접 구현되지 않았음에도(PHP 버전 4.x와의 호환성을 보장하기 위해) OOP와 관점 지향 프로그래밍(AOP)의 원칙이 드루팔 설계에 존재한다고 반박한다. 이는 드루팔 코어의 미래 버전에 마이그레이션하는 데 도움이 되지만, 버전 7을 시작으로 PHP5에서 제공하는 OOP를 활용하기 시작할 것이다. 드루팔 7은 이전 PHP 릴리스와의 하위 호환성이 없을 것이다.