기사 디렉토리
완전히 비활성화 워드프레스(WordPress) 프런트엔드는 데이터베이스가 스캔 작업으로 인해 과부하되는 것을 방지하기 위해 자체 검색 기능을 제공합니다.
데이터베이스가 다운되는 이유는 웹사이트에 콘텐츠가 너무 많아서가 아니라, 터무니없이 비효율적인 워드프레스 기본 검색 기능을 여전히 사용하고 있기 때문입니다.
많은 웹사이트 소유자들이 간과하는 한 가지 사실이 있습니다. 바로 프런트엔드입니다... ?s= 검색 매개변수는 해커와 스캐너들이 가장 선호하는 요소입니다.
누군가가 검색 인터페이스에 계속해서 요청을 보내면 데이터베이스는 수천 개의 의미 없는 쿼리를 실행해야 하는 상황에 놓이게 됩니다.
그 결과, CPU 사용량이 급증하고 메모리 사용량이 폭발적으로 증가했으며 웹사이트가 다운되었습니다.
이는 과장이 아니라 수많은 사이트에서 실제로 겪은 고통스러운 경험입니다.
워드프레스 기본 검색 기능을 비활성화하는 이유는 무엇인가요?
워드프레스의 내장 검색 기능은 기본적으로 데이터베이스에서 전체 텍스트를 대상으로 하는 LIKE 쿼리입니다.
이 쿼리는 특히 기사 수가 1개를 넘을 경우 매우 비효율적이며, 한 번 검색하는 데 0.5초 이상 소요될 수 있습니다.
누군가 웹 크롤러나 공격 스크립트를 사용하여 초당 수십 건의 검색 요청을 보내면 데이터베이스는 즉시 과부하 상태가 될 것입니다.
워드프레스 공식 문서에 따르면, 기본 검색 기능은 보호 메커니즘이 전혀 없으며 프런트엔드에 완전히 노출되어 있습니다. 즉, 공격자는 로그인조차 하지 않고도 이 진입점을 악용할 수 있다는 뜻입니다.

대안 솔루션: 더 똑똑한 검색 엔진에 연결하세요
많은 전문 웹사이트들은 더 이상 워드프레스의 기본 검색 기능에 의존하지 않습니다.
예를 들어, 접근 구글 프로그래밍 검색 또는 Algolia 이러한 제3자 검색 서비스는 빠를 뿐만 아니라 더욱 정확한 결과를 제공합니다.
더 중요한 것은 모든 쿼리가 외부에서 수행되므로 이러한 서비스는 데이터베이스에 과부하를 주지 않는다는 것입니다.
그러므로 웹사이트가포지셔닝도구 사이트, 블로그 사이트, 또는 이미 외부 검색에 의존하는 사이트라면 워드프레스의 내장 검색 기능을 계속 유지할 이유가 없습니다.
WordPress 프런트엔드 검색 코드 구현을 완전히 비활성화합니다.
가장 직접적인 방법은 주제에 집중하는 것입니다. functions.php 다음 코드를 파일에 추가하세요:
// 禁用 WordPress 前台搜索功能,防止被扫描拖垮数据库
function disable_wp_search( $query, $error = true ) {
if ( is_search() && !is_admin() ) {
$query->is_search = false;
$query->query_vars['s'] = false;
$query->query['s'] = false;
if ( $error == true ) {
// 直接返回 404 页面,不走任何数据库查询
$query->set_404();
status_header( 404 );
nocache_headers();
}
}
}
add_action( 'parse_query', 'disable_wp_search' );
add_filter( 'get_search_form', '__return_empty_string' );
이 코드의 논리는 매우 간단합니다.
- 포그라운드 검색 요청이 감지되면 데이터베이스 쿼리가 즉시 차단됩니다.
- 404 페이지로 돌아가면 진입점이 완전히 차단됩니다.
- 동시에 사용자가 실수로 검색창에 접근하는 것을 방지하기 위해 검색창을 삭제했습니다.
이 방법의 장점은 공격자가 수많은 요청을 보내더라도... ?s=xxx데이터베이스 쿼리를 실행하지 않습니다.
보다 세련된 구현 방법: Fluent Snippets 사용
테마 파일을 직접 수정하고 싶지 않다면 다음 방법을 사용할 수 있습니다... 플루언트 스니펫 플러그인.
이 플러그인을 사용하면 코드 조각을 백그라운드에서 직접 추가하고 그 효과와 변경 사항을 확인할 수 있습니다. functions.php 똑같지만 더 안전합니다.
이 기능을 활성화하면 테마 업데이트로 인해 사용자 지정 코드가 덮어쓰여질 염려 없이 모든 사용자 지정 코드를 쉽게 관리할 수 있습니다.
실제 테스트 결과: 데이터베이스 부하가 급격히 감소했습니다.
구성에서 2코어 CPU + 4GB RAM VPS에서 네이티브 검색이 초당 50개의 요청을 발생시켰을 때 데이터베이스 CPU 사용률이 95%까지 급증했습니다.
검색 기능을 비활성화한 후 동일한 요청을 보내니 바로 404 오류가 반환되었고, 데이터베이스 부하도 거의 0에 가까웠습니다.
그렇기 때문에 많은 보안 전문가들은 워드프레스의 기본 검색 기능이 필요하지 않다면 즉시 비활성화할 것을 강력히 권장합니다.
보안 연구원들은 Sucuri의 공식 블로그에서 다음과 같이 명시적으로 밝혔습니다.
"워드프레스 기본 검색 기능은 공격자가 악용하기 가장 쉬운 진입점 중 하나입니다. 공격자는 빈번한 검색 요청을 통해 서비스 거부 공격을 일으킬 수 있습니다."
이 설명만으로도 문제를 설명하기에 충분합니다.
결론적으로, 안전은 선택 사항이 아니라 필수 사항입니다.
웹사이트 보안은 단순한 부가적인 요소가 아니라, 생사가 달린 문제입니다.
워드프레스의 기본 검색 기능을 비활성화하는 것은 사소해 보일 수 있지만, 데이터베이스가 과부하되는 것을 방지할 수 있습니다.
정보 과잉의 시대에 진정한 지혜는 기능을 추가하는 데 있는 것이 아니라 비효율적이거나 위험한 기능을 과감하게 제거하는 데 있습니다.
명심하십시오: 안전은 비용이 아니라 가치입니다.
여전히 망설이신다면, 스스로에게 이렇게 질문해 보세요. 공격자들이 비웃는 가운데 데이터베이스가 다운되도록 내버려 두시겠습니까, 아니면 상황을 통제하고 싶으십니까?
희망 첸 웨이량 블로그( https://www.chenweiliang.com/ 여기 공유된 "악성 프로그램 검사로 인한 데이터베이스 성능 저하를 방지하기 위해 WordPress의 기본 검색 기능을 완전히 비활성화하는 방법"이라는 글이 도움이 될 수 있습니다.
이 기사의 링크를 공유하는 것을 환영합니다:https://www.chenweiliang.com/cwl-34192.html
