it-swarm-ko.tech

사이트에서 WordPress를 사용하는 사실을 숨기려면 어떻게해야합니까?

나는 우리가 WordPress를 사용하고 있다는 사실에 대해 신중하게 노력하고있는 웹 사이트를 가지고 있습니다. 덜 명백하게하기 위해 우리가 취할 수있는 조치는 무엇입니까?

편집 - 중요 보안 메모 :

이 작업을 Mark 's answer 처럼 완벽하게 수행하는 것은 불가능하므로 보안 조치로이 작업에 의존하지 마십시오.

141
Casebash

가장 큰 WordPress 경품은 <head> </head> 태그 사이에 있습니다.

The Twentyten Theme의 WordPress head content 출력 예 및 제거 방법 :

<link rel="profile" href="http://gmpg.org/xfn/11" /> 

Header.php에서 직접 제거하십시오.

 <link rel="stylesheet" type="text/css" media="all" href="http://example.com/wp-content/themes/twentyten/style.css" /> 

다른 위치에서 스타일 시트를 호출하여 WordPress를 숨기고 wp-content 디렉토리를 변경하십시오. WordPress에서는 테마에 style.css 상단에 몇 가지 기본 정보를 포함해야합니다 (style.css는 테마 루트 디렉토리에 있어야합니다). 대체 CSS를 만들어 머리에서 호출해야합니다. WordPress에서는 테마 디렉토리에 있어야하는 테마 style.css를 사용하지 않아도됩니다.

Header.php에서 직접 제거하십시오.

<link rel="alternate" type="application/rss+xml" title="Example Blog &raquo; Feed" href="http://example.com/feed/" /> 
<link rel="alternate" type="application/rss+xml" title="Example Blog &raquo; Comments Feed" href="http://example.com/comments/feed/" />    
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.com/xmlrpc.php?rsd" /> 
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://example.com/wp-includes/wlwmanifest.xml" /> 
<link rel='index' title='Example Blog' href='http://example.com/' /> 
<meta name="generator" content="WordPress 3.1-alpha" /> 

이러한 추가 링크를 제거하려면 functions.php에 필터를 추가하십시오

// remove junk from head
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

Wp-config.php 파일에서 플러그인 디렉토리와 wp-content 디렉토리를 변경할 수 있지만 테마 나 플러그인이 파일을 호출하는 적절한 방법을 사용하지 않으면 몇 가지 문제가 발생할 수 있습니다.

define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/new-wp-content' );

WP_CONTENT_URL을이 디렉토리의 전체 URI (후행 슬래시 없음)로 설정하십시오.

define( 'WP_CONTENT_URL', 'http://example/new-wp-content');

선택 사항 WP_PLUGIN_DIR을이 디렉토리의 전체 로컬 경로 (슬래시 없음)로 설정합니다 (예 :.

define( 'WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/new-wp-content/new-plugins' );

WP_PLUGIN_URL을이 디렉토리의 전체 URI (후행 슬래시 없음)로 설정하십시오.

define( 'WP_PLUGIN_URL', 'http://example/new-wp-content/new-plugins');

플러그인 _

Akismat, One in One SEO, W3-Total-Cache, Super Cache 및 기타 많은 플러그인은 HTML 출력에 주석을 추가합니다. 대부분은 주석을 제거하기 위해 수정하기 쉽지만 플러그인이 업데이트 될 때마다 변경 사항을 덮어 씁니다.

wp-includes

Wp-includes 디렉토리에는 jquery와 wp_enqueue_script ()를 사용하여 테마 또는 플러그인이 호출하는 다양한 기타 js 파일이 있습니다. 이를 변경하려면 기본 WordPress 스크립트 등록을 취소하고 새 위치를 등록해야합니다. functions.php에 추가하십시오 :

function my_init() {
    if (!is_admin()) {
        // comment out the next two lines to load the local copy of jQuery
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', false, '1.3.2');
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'my_init');

이 작업은 테마 나 플러그인에서 사용하는 각 스크립트로 수행해야합니다.

126
Chris_O

하나의 비트가 자주 놓친입니다 - WordPress 루트에서 readme.html를 삭제하십시오. 설치를 WP으로 식별 할뿐만 아니라 정확한 버전도 가지고 있습니다. 업데이트를 반복하는 것을 잊지 마십시오.

관련 질문 : 액세스 또는 자동 삭제 방지 readme.html, license.txt, wp-config-sample.php

45
Rarst

나는 항상 Roots Theme method 을 사용했습니다.
그러나 ThemeJungle 에 적용하면 대개 큰 두통이 있습니다.

그래서 WP_CONTENT_* 상수로 연주하기 시작했습니다. 내가 생각하는 것은 훨씬 덜 오류가 발생하기 쉬운 방법이며 이것이 내가 지금하고있는 일입니다.

safari activity window
/muploads 폴더이고, /tthemes 폴더이고, /t/t는 활성 테마 폴더입니다. 사이트가 복잡하지 않으므로로드되는 자산이 거의 없습니다 ...


WP_CONTENTLESS

wp-config.php

wp-content을 사이트의 루트 (/public_html/)로 설정.

/** 
 Inside WP_CONTENT, the following folders should exist: 
 /languages , /mu-plugins , /plugins , /themes , /upgrade , /uploads  

 The WP_CONTENT_* definitions bellow REMOVE the existence of the /wp-content folder 
 and makes its contents reside in the ROOT of your site

 UTTERMOST attention is necessary when doing file maintenance activities in the server (i.e.: WP upgrades, new Webmaster...), 
 as the Themes and Plugins folders are meant to be renamed to /t and /p (serious candidates for unthoughful removal)

 PLEASE note:
 - we change the Plugins folder in WP_PLUGIN_* definitions
 - the Themes folder is changed by a MustUse Plugin 
   (/mu-plugins/set-extra-themes-folder.php)
 - the Uploads folder is changed in WordPress settings page 
   (http://example.com/wp-admin/options-media.php)
 - the hardcode path to be used in WP_CONTENT_DIR and WP_PLUGIN_DIR can be checked using an action inside the set-extra-themes-folder Plugin (check the comments in this file)
*/
define( 'WP_CONTENT_DIR', '/www/htdocs/username/public_html' );
define( 'WP_CONTENT_URL', 'http://www.example.com' );

define( 'WP_PLUGIN_DIR', '/www/htdocs/username/public_html/p' );
define( 'WP_PLUGIN_URL', 'http://www.example.com/p' );

나는 [wp-hackers]-WP_CONTENT_DIR (및 URL)을 DOCUMENT_ROOT? 로 설정하는 데 대한 결점 : John Blackbourn1마이크 리틀2 오토 친절하게 충고했다 :

1
지난 18 개월 동안 사이트에서이 구조를 활성화했으며 아무런 문제가 없습니다. 컨텐츠 디렉토리의 위치를 ​​변경함에 따라 사이트에 추가 한 플러그인이 컨텐츠 디렉토리가 wp-content에 있다고 가정하지 않는 경우 다시 확인해야합니다.

2
네트 주위에서 $_SERVER['DOCUMENT_ROOT']가 해킹에 취약 할 수있는 토론이 있습니다. 이 경우 require() 또는 include()WP_CONTENT_DIR 장소가 많기 때문에 이는 매우 위험합니다. '어떤 것';

3
$_SERVER의 내용이 완벽하게 안전 할 수있는 경우가 있지만 보안상의 이유로 항상 신뢰할 수없는 데이터로 처리하는 것이 좋습니다. 이 경우 디렉토리를 하드 코딩하십시오.


새로운 테마 폴더

/mu-plugins/set-extra-themes-folder.php

WP_THEMES_* 상수가 없으므로 register_theme_directory () ~ " 테마를 포함하는 디렉토리를 등록해야합니다. "
추가 디렉토리를 루트로 설정하려고했지만 결과는 funny 입니다 (예 : 작동하지 않음).

<?php
/*
    Plugin Name: Set Extra Themes Folder
    Version: 1.0
    Description: Allows the directory - http://example.com/t - to be used as an extra theme's directory
    Plugin URI: http://wordpress.stackexchange.com/questions/1507
    Author: brasofilo
    Author URI: http://rodbuaiz.com
*/


/**
 * Remove the comment from the following line to know the correct path to put in register_theme_diretory()
*/
//add_action( 'admin_head', 'brsfl_alert_directory_path' );

function brsfl_alert_directory_path()
{
    echo '<script type="text/javascript">
        alert("Directory: '.$_SERVER['DOCUMENT_ROOT'].'");
    </script>';
}


/**
 * The following will enable the directory "t" to be used as an EXTRA Themes directory
*/
register_theme_directory( '/www/htdocs/username/public_html/t' );


/**
 * De-registering default scripts in wp-includes for CDN ones
*/
add_action('init', 'brsfl_init_scripts');

function brsfl_init_scripts() 
{
    if ( !is_admin() ) 
    {
        wp_deregister_script( 'jquery' );
        wp_deregister_script( 'swfobject' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', false, '1.7.1' );
        wp_register_script( 'swfobject', 'https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js', false, null, true );
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'swfobject' );
    }
}

폴더 업로드

/wp-admin/options-media.php

http://example.com/uploads 대신 http://example.com/m입니다.
Organize my uploads into...를 선택 취소하면 자산 URL에 WPless 모양이 나타납니다.
사이트가 활성 상태 인 경우 데이터베이스에서 검색/교체를 수행하고 파일을 이동해야합니다.
uploads folder settings


플러그인 및 헤드 컨텐츠

이 Q & A에서 Cris_O 답변을 참조하십시오.


Readme.html

이 Q & A에서 Rarst 답변을 참조하십시오.


다른 단계

일반적으로 ThemeJungle 테마는 테마의 특정 해킹을 유발할 수 있습니다.
좋아요 ... TimThumb 작동하지 않습니다 (!!! lol !!!).

21
brasofilo

유일한 유효한 대답은 : 불가능

이렇게 많은 투표율이 높은 대답은 .... 곧바로 기록을 세울 시간. 글쎄, 진실은 그것이 사실상 불가능하다는 것입니다. 그렇다고하더라도, 인생은 너무 짧아서 그것에 노력을 기울일 수 없을 것입니다. WP 숨기기 단계를 촉진하는 모든 답변은 단지 시간 낭비 일 뿐이므로 WP (부조리하다)를 숨기고 있다고 생각하면서 오해 할 것입니다.

1) 문제는 명백한 wp-* URL, 발전기 메타 등이 아닙니다. 어려운 문제는 집에서 만든 시스템이 작성자 페이지, 연도, 월, 일 페이지와 같이 구현하는 것을 괴롭히지 않는 WordPress와 관련된 패턴과 관련이 있습니다 = nnn을 유효한 매개 변수로 사용하고 WordPress 코멘트 클래스, 구조 및 링크 이름이 포함 된 주석 형식을 사용하고 캐싱 플러그인 및 yoast SEO 및 HTML 자체를 검사 할 때만 볼 수있는 다른 많은 플러그인의 자체 승격이 있습니다 .

2) WP의 존재를 보여주는 다른 계산되지 않은 방법이 있습니다 (당신은 그것을 이길 수 없습니다) :

  • 심지어 PHP 응답 헤더 (Dan Gayle이 저의 대답 아래에 있음)는 특정 WP 헤더를 반환합니다.

  • 누구나 방금 수십 개의 루트 .php 파일 중 하나를 쿼리 할 수 ​​있습니다. site.com/wp-cron.php 또는 site.com/xmlrpc.php (또는 숨길 수는없는 등) 헤더 응답은 200 대신 404 not found가됩니다.

  • 누구나 확인할 수있는 json 종점이 WP 특정 답변을 얻을 수 있습니다.

  • 페이지 HTML 안에는 .css 또는 .js 파일의 많은 부분이 명확하게 WP를 참조하는 특정 문구를 가지고 있습니다.

  • HTML 페이지 내부에서 <div class="entry-content post-14"... 등의 요소/CSS 클래스를 쉽게 찾을 수 있습니다 (구조가 WP를 사용한다는 직접적인 힌트 임)

  • HTML 페이지에서 uploads 폴더를 쉽게 볼 수 있습니다. 또는 하드 코드로 이름을 변경하더라도 uploads/2018/05/image.jpg (또는 image-315x225.jpg)와 같은 날짜 부분은 일반적인 WP구조를 나타냅니다.

  • 현재 여러 사이트가 MultiSite를 사용하여 구축되었으므로 링크에서 /site/2을 (를) 사용합니다 ...

  • 플러그인/테마 readme (모두 포함)에 대한 핑 (예 : plugin-name/readme.txt, 상태 200 반환).

  • 그리고 당신 (또는 전문가조차도)이 숨을 수 없게되고 많은 시간을 낭비 할 것입니다.


결론

그리고 이것이 WordPress라는 것을 나타내는 모든 내용을 정리하려고해도 플러그인 또는 코어 업그레이드가 끝나면 다시 실행하거나 최소한 다시 확인해야 할 수도 있습니다. 삶은 너무 짧습니다.

일부 diletants을 오도 할 수도 있지만 좋은 감찰관에서 숨길 수는 없습니다. 이것이 보안 조치로 수행된다면, 항상 틀린 보안이 있으며, 당신이 WordPress를 사용하는 것을 부끄러워하면 아무 것도 신경 쓰지 않습니다. 아무도 신경 쓰지 않습니다. 스스로 알아내는 법을 알아라.

관심을 가져야 할 것은 WP 가능한 한 보호하고 정기적 업데이트를 모니터링하는 것입니다.

12
Mark Kaplun

한 서버에 WordPress를 설치하고 필요한 콘텐츠 만 다른 서버에서 콘텐츠를 긁어 낼 수 있습니다.

RSS가 필요하다면 그와 똑같이해야 할 것입니다.

사실 그것은 프록시 나 CDN에서 정적 페이지를 제공하는 것과 같지만 서비스 할 비트 만 제공하는 것과 같습니다. 그런 다음 Disqus와 같은 자바 스크립트 기반의 주석 시스템을 사용할 수도 있습니다.

리소스 사용량이 매우 적습니다. 여기서는 서버에서 콘텐츠를 제공하는 데이터베이스가 없기 때문입니다.

10
AndyBeard

블로그에 로그인 할 사용자 정의 주소를 만들 수 있습니다. 고전적인 "myblog.com/wp-admin"경로를 사용하여 대시 보드 (이 페이지 를 (를) 사용하지 않으면 스텔스 로그인을 만드는 데 도움이됩니다. 이는 보안 조치에도 좋습니다.

그래서 당신의 블로그에 wp-admin을 추가하는 ppl은 추측 할 수 없습니다 :)

7
mireille raad

위의 내용 외에도 다양한 wp* 파일 및 디렉토리에 대한 액세스를 잠글 필요가 있습니다. 누군가가 WP을 (를) 실행하고 있는지보고 싶다면 wp-settings.php을 (를) 가지고 있는지 또는 일부 디렉토리에 액세스 할 수 있는지를 추측 할 수 있습니다. 403은 자원이 존재 함을 사용자에게 알려주기 때문에 충분하지 않습니다. 그들은 단지 그것에 접근 할 수 없다.

나는 아파치 전문가가 아니므로 이 질문 over serverfault.

5
Avery Chan

PHP와 mod_rewrite를 처음 사용하는 사람이라면 어렵습니다. 내 대답의 섹션을 확인하도록 권합니다. 또는 직접 해보십시오. 다음과 같이 wp-content/plugins 경로 구조를 숨길 수 있습니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^modules/(.*) /wp-content/plugins/$1 [L,QSA]
</IfModule>

경로가/modules로 변경됩니다. 다른 구조체와 비슷한 것을 사용하면 몇 가지 고급 다시 쓰기가 필요합니다. http://httpd.Apache.org/docs/current/mod/mod_rewrite.html 추가 mod_rewrite 정보를 참조하십시오.

상자 밖에서 뭔가를 선호하는 경우에는 Nice 플러그인, 상업용, WordPress 리포지토리가 거의 없습니다. WP Hide & Security Enhancer 를 사용해 보시기 바랍니다. 여기에는 많은 것들이 포함되어 있으며 WordPress를 인식 할 수 없게 만드는 모든 것을 거의 바꿀 수 있습니다. 다음은 코드의 일부 기능입니다.

  • 맞춤 관리자 URL
  • 맞춤 관리자 URL
  • 기본 관리자 URL 차단
  • 모든 직접 폴더 액세스를 차단하여 구조를 완전히 숨김
  • 사용자 정의 wp-login.php 파일 이름
  • 기본 wp-login.php 차단
  • 기본 wp-signup.php 차단
  • XML-RPC API 차단
  • 새로운 XML-RPC 경로
  • 조정 가능한 테마 URL
  • 새 하위 테마 URL
  • 테마 스타일 파일 이름 변경
  • 사용자 지정 wp-include
  • 기본 wp-include 경로 차단
  • Defalt wp-content 차단
  • 맞춤 플러그인 URL
  • 개별 플러그인 URL 변경
  • 기본 플러그인 경로 차단
  • 새로운 업로드 URL
  • 기본 업로드 URL 차단
  • WordPress 버전을 제거하십시오
  • 메타 생성기 블록
  • 그림 이모티콘 및 자바 스크립트 코드가 필요하지 않습니다.
  • 핑백 태그 제거
  • Wlwmanifest 메타를 제거하십시오.
  • Rsd_link 메타 제거
  • Wpemoji 제거

그리고 더 많은..

3
WP-Silver

귀하의 요청과 함께 전송되는 많은 http 헤더 정보가 사이트를 WordPress에서 실행중인 것으로 식별 할 수 있음을 잊지 마십시오. 예를 들어 다음 사이트의 헤더를 확인한 경우에는 분명합니다.

$ curl -I http://www.rollingstones.com/
Server: WP Engine/5.0

$ curl -I http://www.mattcutts.com
X-Powered-By: W3 Total Cache/0.9.1.3

$ curl -I http://blogs.reuters.com/us/
WP-Super-Cache: Served supercache file from PHP

그 중 일부는 서버에 의해 설정되고, 일부는 플러그인에 의해 설정되므로, 100 % 제거하는 방법은 말할 것도 없지만 PHP 5.3을 사용하는 경우에는

header_remove("X-Foo"); ( http://www.php.net/manual/en/function.header-remove.php )

내용을 빼내기 전에 알려진 PHP 헤더를 제거하십시오. 나는이 정보를 놓을 곳을 분명히 말할 수는 없지만 (아마도 다른 사람이 정보를 제공 할 수는 있겠지만), 브라우저로 보내지는 모든 콘텐츠가 있기 전에 index.php 맨 위에 올려 놓는 것이 안전 할 것입니다.

3
Dan Gayle

대부분의 답변은 페이지의 소스 코드에서 WordPress를 모호하게 만드는 것에 집중하지만, WP가 이미 표준 설치의 http 헤더에서 벗어났습니다. web-sniffer (IE 6 인 척하고 http 1.0 헤더를 요청하십시오)와 같은 사이트에서 자신의 사이트를 시험해보십시오.

<http://www.example.com/wp-json/>; rel="https://api.w.org/"

후자는 Wordpress.org API 에 대한 링크입니다. REST API가 WP 4.4에 포함 되었기 때문에 거기에 있습니다. functions.php 시작 부분에서이 줄을 사용하여 제거 할 수 있습니다.

remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );

Jetpack의 짧은 링크와 같은 많은 플러그인은 http 헤더에 링크를 삽입 할 수도 있습니다. WP에 HTTP API 가있어 헤더를 조작 할 수 있기 때문에 그렇게 할 수 있습니다. 이 인터페이스를 사용하여 프로세스에서 충분히 늦게 액션을 추가하면 플러그인별로 모든 헤더 설정을 제거 할 수 있습니다.

마지막으로, .htaccess 헤더 인터페이스 를 사용하여 WP가 가로 챌 수있는 것을 가로 챌 수 있습니다. 예를 들어 다음 행을 포함하여 링크 헤더가 전송되지 않도록 할 수 있습니다.

<IfModule mod_headers.c>
Header unset Link
</IfModule>
2
cjbj

나는 코딩 옵션을 반복하고 싶지 않습니다. 왜냐하면 그것들은 철저히 다루어 졌기 때문에, 다른 옵션은 WP가 숨겨진 플러그인을 사용하고 있다는 것을 알고 있습니다. 나는이 플러그인을 만족스러운 표준 전에 사용했다. 그 불리는 내 워드 프레스.

2
NJENGAH

테마를 사용자 정의하여 모든 WordPress 정보를 제외 할 수 있습니다. 또한 플랫폼에 대한 정보를 출력하는 메타 위젯 및 위젯을 제거하십시오.

개인적으로, 저는 WordPress를 사용하고 있음을 표시함으로써 감사의 마음을 표시합니다.

0
James