WordPress를 사용하고 있다는 사실에 대해 신중한 웹 사이트가 있습니다. 덜 명확하게하기 위해 어떤 조치를 취할 수 있습니까?
편집-중요한 보안 정보 :
Mark의 답변에 따라이 작업을 완벽하게 수행하는 것은 불가능 하므로 보안 조치로 이것에 의존하지 마십시오.
WordPress를 사용하고 있다는 사실에 대해 신중한 웹 사이트가 있습니다. 덜 명확하게하기 위해 어떤 조치를 취할 수 있습니까?
Mark의 답변에 따라이 작업을 완벽하게 수행하는 것은 불가능 하므로 보안 조치로 이것에 의존하지 마십시오.
답변:
가장 큰 WordPress 경품은 <head> </head>
태그 사이에 있습니다.
The Twentyten Theme에서 출력 한 WordPress 헤드 컨텐츠의 예 및 제거 방법 :
<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 » Feed" href="http://example.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="Example Blog » 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, 올인원 SEO, W3-Total-Cache, Super Cache 등과 같은 일부 플러그인은 HTML 출력에 주석을 추가합니다. 주석을 제거하기 위해 대부분 수정하기는 쉽지만 플러그인이 업데이트 될 때마다 변경 사항을 덮어 씁니다.
wp- 포함
wp-includes 디렉토리에는 jwp 및 테마 또는 플러그인이 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');
테마 또는 플러그인에서 사용하는 각 스크립트를 사용하여 수행해야합니다.
register_theme_directory()
, "wp-content"디렉토리에서 테마 디렉토리를 숨기는 것이 좋습니다.
종종 놓치는 한 비트 readme.html
-WordPress 루트에서 삭제하십시오 . 설치를 WP로 식별 할뿐만 아니라 정확한 버전도 있습니다. 그리고 업데이트를 반복하는 것을 잊지 마십시오.
관련 질문 : 액세스 방지 또는 자동 삭제 readme.html, license.txt, wp-config-sample.php
나는 항상 루츠 테마 방법을 사용했습니다 .
그러나 ThemeJungle에 적용하면 대개 큰 두통이 있습니다.
그래서 WP_CONTENT_*
상수 를 가지고 놀기 시작했습니다 . 내가 생각하는 것은 훨씬 덜 오류가 발생하기 쉬운 방법이며 이것이 내가 지금하고있는 일입니다.
/m
는 IS uploads
폴더, /t
은 IS themes
폴더와 /t/t
활성 테마 폴더입니다. 사이트가 복잡하지 않으므로로드 된 자산이 거의 없습니다 ...
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 Blackbourn 1 , Mike Little 2 및 Otto 3 가 다음 과 같이 조언 할 정도로 친절했습니다.
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 () "합니다 . 테마를 포함하는 디렉토리를 등록 "
루트에 별도의 디렉토리를 설정하는 시도를했지만 결과는 재미 (예 : 그것은 작동하지 않습니다).
<?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...
줄 것이다 WPless의 자산의 URL에 모습을.
사이트가 활성 상태 인 경우 데이터베이스에서 검색 / 교체를 수행하고 파일을 이동해야합니다.
Cris_O
이 Q & A의 답변을 참조하십시오 .
Rarst
이 Q & A의 답변을 참조하십시오 .
평소와 같이 ThemeJungle 테마는 테마의 특정 해킹을 유발할 수 있습니다.
처럼 ... TimThumb 작동하지 않습니다 (!!! lol !!!).
너무 많은 투표 결과를 얻었습니다 .... 기록을 똑바로 세울 시간. 사실, 그것은 사실상 불가능하며 그것이 가능하더라도 인생이 너무 짧아서 노력을 기울일 수는 없습니다. WP를 숨기는 단계를 조장하는 모든 대답은 시간 낭비이며 WP를 숨기고 있다고 생각하는 오해를 불러 일으킬 것입니다.
1) 문제는 명백한 wp-*
URL, 생성기 메타 등 이 아닙니다 . 어려운 문제는 집에서 만든 시스템이 저자 페이지, 연도, 월, 일 페이지와 같은 구현을 귀찮게하지 않는 워드 프레스와 관련된 패턴에 있습니다 .p = 유효한 매개 변수로 nnn은 워드 프레스 주석 클래스, 구조 및 링크 이름이있는 주석 양식을 가지고 있으며 캐싱 플러그인과 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"...
또는 etc 등 의 elements / css 클래스를 쉽게 찾을 수 있습니다 (사용 된 구조가 WP라는 직접적인 힌트입니다)
HTML 페이지에서 uploads
폴더 를 쉽게 볼 수 있으며 하드 코딩으로 폴더 이름을 바꾸더라도 날짜 부분 uploads/2018/05/image.jpg
(또는 짝수 image-315x225.jpg
)은 일반적인 WP 구조를 나타냅니다.
많은 사이트가 MultiSite를 사용하여 구축되었으므로 /site/2
링크에서 ie 를 사용합니다.
plugin-name/readme.txt
, returning status 와 같은 모든 플러그인 / 테마 readme (모두 포함)에 핑 합니다 200
.
그리고 당신 (또는 전문가들)이 숨길 수없고 당신의 하루를 낭비 할 수있는 많은, 많은, 많은 다른 것들!
결론
그리고 이것이 워드 프레스임을 나타내는 모든 것을 정리하려고 노력하더라도, 모든 플러그인 또는 코어 업그레이드 후 다시 실행하거나 최소한 다시 확인해야 할 수도 있습니다. 인생은 너무 짧습니다.
일부 diletants를 오도 할 수 있지만, 훌륭한 검사관으로부터 숨길 수는 없습니다. 이것이 보안 조치로 수행되면 그것은 항상 잘못된 모호한 보안이며, 워드 프레스를 사용하는 것이 부끄러운 경우, 당신에게 무언가를 말하겠습니다-아무도 신경 쓰지 않을 것입니다. 스스로 알아내는 방법을 알고 있습니다.
주의해야 할 것은 WP를 최대한 보호하고 정기적 인 업데이트를 모니터링한다는 것입니다.
한 서버에 WordPress를 설치하고 필요한 컨텐츠를 포함하여 다른 서버에서만 컨텐츠를 긁을 수 있습니다.
RSS가 필요하다면 그것도 똑같이해야합니다.
실제로 프록시 또는 CDN에서 정적 페이지를 제공하는 것과 같지만 제공하려는 비트 만 제공합니다. 그런 다음 Disqus와 같은 자바 스크립트 기반 주석 시스템을 사용할 수도 있습니다.
서버에서 콘텐츠를 제공하는 데이터베이스가 없기 때문에 리소스 사용이 매우 적습니다.
블로그에 로그인하기 위해 사용자 정의 주소를 작성할 수 있습니다. 클래식“myblog.com/wp-admin”경로를 사용하여 대시 보드로 이동하지 않음 이 페이지 는 스텔스 로그인을 만드는 데 도움이되며 보안 조치에도 유용합니다.
따라서 블로그에 wp-admin을 추가 한 ppl은 추측 할 수 없습니다. :)
귀하의 요청과 함께 전송되는 많은 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의 맨 위에 배치하는 것이 안전합니다.
php와 mod_rewrite를 처음 사용한다면 달성하기 어려울 수 있습니다. 내 답변 섹션을 확인하십시오. 또는 직접 시도해보십시오. 다음과 같이 wp-content / plugins 경로 구조를 숨길 수 있습니다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^modules/(.*) /wp-content/plugins/$1 [L,QSA]
</IfModule>
경로가 / modules로 변경됩니다. 다른 구조와 유사한 것을 사용하십시오 . 고급 재 작성이 필요할 수 있습니다 . 추가 mod_rewrite 정보는 http://httpd.apache.org/docs/current/mod/mod_rewrite.html 을 참조 하십시오 .
상자 밖에서 원하는 것을 선호하는 경우 WordPress 저장소에서 무료로 제공되는 멋진 플러그인이 거의 없으며 WP Hide & Security Enhancer 을 사용해보십시오 . 여기에는 많은 것들이 포함되며 WordPress를 인식 할 수 없도록 거의 모든 것을 변경하는 데 도움이됩니다. 코드의 일부 기능은 다음과 같습니다.
그리고 더 많은..
대부분의 답변은 페이지의 소스 코드에서 WordPress를 가리는 데 집중하지만 WP가 이미 표준 설치의 http 헤더에 자신을 부여하기 전에도 나타납니다. 웹 스니퍼 와 같은 사이트에서 자신의 사이트를 사용해보십시오 (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>
플러그인 WPS 숨기기 로그인을 사용할 수 있습니다 .
을 사용하여 워드 프레스에 로그인합니다 wp-admin
. 그러나이 wp-admin
플러그인을 사용하여 커스텀으로 변경할 수 있습니다 .
예:
전 : http://example.com/wp-admin
후 : http://example.com/custom-text-to-login