私は私たちがWordPressを使っているという事実について慎重を期すことを試みているウェブサイトを持っています。それを目立たなくするためにどのようなステップを踏むことができますか?
Markの answer のようにこれを完全に行うことは不可能であることを理解してください。セキュリティ対策としてこれに頼らないでください。
最大の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ファイルであなたのpluginディレクトリとあなたの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、All in One SEO、W3-Total-Cache、Super Cacheなどのプラグインの中には、HTML出力にコメントを追加するものがあります。ほとんどはコメントを削除するために変更するのが簡単ですが、あなたの変更はプラグインが更新されるときはいつでも上書きされます。
wp-includes
Wp-includesディレクトリには、テーマやプラグインがwp_enqueue_script()を使って呼び出すjqueryやその他のさまざまな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');
これはあなたのテーマやプラグインで使用される各スクリプトで行われる必要があります。
見逃されがちな1ビット - WordPressルートのreadme.html
を削除してください。インストールをWPとして識別するだけでなく、正確なバージョンも持っています。そして更新を繰り返すのを忘れないでください。
関連する質問: アクセスを禁止する、またはreadme.html、license.txt、wp-config-sample.phpを自動削除する
私はいつも ルーツテーマメソッド を使いました。
しかし、それらをThemeJungleに適用すると、通常大きな頭痛がします。
それで、WP_CONTENT_*
定数で遊び始めました。私はこれがはるかに少ないエラーを起こしやすい方法であると信じています、そしてこれは私が今働いているものです:
/m
はuploads
フォルダー、/t
は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? に設定する際のあらゆる欠点について尋ねた)1マイク・リトル2 とオットー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() )に "テーマを含むディレクトリを登録してください。"が必要です。
追加のディレクトリをルートに設定しようとしましたが、結果は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のように表示されます。
サイトが稼働中の場合は、データベース内で検索/置換を行い、ファイルを移動する必要があります。
このQ&AのCris_O
回答を参照してください。
このQ&AのRarst
回答を参照してください。
いつものように、ThemeJungleテーマはテーマの特定のハックを促すかもしれません。
のように... TimThumb 動作していません(!!! lol !!!)。
非常に多くの投票された回答がありました。実のところ、それは事実上不可能であり、たとえそれがあったとしても、人生はおそらくそれに努力を注ぐには短すぎるということです。 WPを隠すためのステップを促進するあらゆる答えは、あなたの時間の無駄であり、あなたがあなたのWPを隠していると思っていることを誤解させるでしょう(それは不合理です)。
1)問題は明白なwp-*
のURL、ジェネレータのメタなどではありません。難しい問題は、自作システムが著者ページ、年、月、日ページのように実装しなくてもよいというワードプレスに関連するパターンにあります。 = nnnを有効なパラメータとして、ワードプレスのコメントクラス、構造、リンク名を含むコメントフォームを使用します。そうすると、キャッシングプラグインとヨーヨーSEO、そしておそらくHTML自体を調べるときにだけ見える他の多くのプラグインの自己宣伝があります。 。
2)WPの存在を示す他に数えられない方法があります(そしてそれを破ることはできません)。
Phpのresponse-header(私の答えの下のDan Gayleによって指摘されているように)でも、特定のWPヘッダを返します。
だれでも単に数十のルートの.phpファイルのどれかに問い合わせることができます:site.com/wp-cron.php
かsite.com/xmlrpc.php
(またはあなたが隠すことができないなど)そしてヘッダーの答えは200
の代わりに404 not found
になります。
誰でもWP特定の回答を得るためにjsonエンドポイントがあることを確認できます。
HTMLページの中では、.css
または.js
ファイルの多くに特定のフレーズがあり、それは明らかにWPを指しています。
HTMLページの中では、<div class="entry-content post-14"...
などのようなelements/cssクラスを見つけるのが簡単です(これは、使用されている構造がWPであることの直接的なヒントです)。
HTMLページの中では、uploads
フォルダを簡単に見ることができます。あるいは、ハードコーディングで名前を変更したとしても、uploads/2018/05/image.jpg
(またはimage-315x225.jpg
)のような日付部分は典型的なWP構造を示します。
現在多くのサイトがMultiSiteを使用して構築されているので、リンクに/site/2
を使用しています...
plugin-name/readme.txt
など、すべてのプラグイン/テーマのreadme(すべてに含まれています)にpingを実行し、ステータス200
を返します。
そして、あなた(あるいは専門家でさえ)が隠れることができなくなり、あなたの日々を無駄にすることになります。
結論
また、これがワードプレスであることを示すものすべてをクリーンアップしようと努力したとしても、プラグインまたはコアをアップグレードするたびにやり直すか、少なくとも再確認する必要があるかもしれません。人生はそのためには短すぎます。
あなたはいくつかの難民を誤解させるかもしれませんが、あなたは良い検査官から隠れることはできません。これがセキュリティ対策として行われている場合、それは常に間違っている曖昧さによるセキュリティです、そしてあなたがワードプレスを使用することを恥じているのであれば、それから私にあなたに何かを言わせてください。自分でそれを理解する方法を知っています。
あなたが気をつけなければならない唯一のことは、あなたができる限りWPを保護し、それが定期的な更新を監視しているということです。
あなたは1つのサーバー上にWordPressを持ち、あなたが必要とするコンテンツを含む他のものからあなたのコンテンツを削り取ることができます。
あなたがRSSを必要とするなら、あなたはそれと同じことをしなければならないでしょう。
事実上、プロキシやCDNから静的ページを配信するようなものですが、配信したいのはほんの少しだけです。その場合は、DisqusなどのJavaScriptベースのコメントシステムを使用することもできます。
本当にリソースの使用量が少ないため、ここではコンテンツを提供するサーバー上のデータベースはありません。
あなたのブログにログインするためのあなたのカスタムアドレスを作成することができます。ダッシュボードへのアクセスに古典的な“ myblog.com/wp-admin”パスを使用しないことで、 このページ はステルスログインの作成に役立ちます。これはセキュリティ対策にも役立ちます。
だからあなたのブログにwp-adminを追加したpplは推測できないでしょう:)
上記に加えて、さまざまなwp*
ファイルおよびディレクトリへのアクセスを制限する必要があります。あなたがWPを実行しているかどうかを知りたい人がいたら、彼らはあなたがwp-settings.php
を持っているかどうか、あるいは何らかのディレクトリにアクセスできるかどうかを推測するでしょう。 403を返すことは、リソースが存在することをユーザーに知らせるので十分ではありません。彼らはただそれにアクセスできない。
私はApacheのエキスパートではないので、 この質問に serverfaultについて/を尋ねました。
あなたが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を認識できないようにするためにほとんどすべてを変更するのに役立ちます。これがコードのいくつかの機能です。
などなど..
あなたのリクエストと一緒に送られる多くの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の一番上に置くのはおそらく安全です。
ほとんどの回答は、ページのソースコードで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 を持っているのでヘッダを操作することができます。プロセスの後半でアクションを追加した場合は、このインターフェースを使用してプラグインによってすべてのヘッダー設定を削除できます。
最後に、WPがしていることを傍受するために .htaccessヘッダインタフェース を使用することができます。たとえば、次の行を含めることでLinkヘッダーが送信されないようにすることができます。
<IfModule mod_headers.c>
Header unset Link
</IfModule>
私はそれらが徹底的にカバーされているので、私はコーディングオプションを繰り返すことを望まない、私が知っている他のオプションはwpを隠すプラグインを使うことである。私は満足のいく基準に前にこのプラグインを使用しました。それは私のワードプレスを隠すと呼ばれる。
テーマをカスタマイズして、すべてのWordPress情報を除外することができます。メタウィジェットやプラットフォームに関する情報を出力するウィジェットも削除してください。
個人的には、WordPressを使用していることを示すことで感謝の気持ちを表したいと思います。