web-dev-qa-db-ja.com

サイトがWordPressを使用しているという事実を隠すためのステップは?

私は私たちがWordPressを使っているという事実について慎重を期すことを試みているウェブサイトを持っています。それを目立たなくするためにどのようなステップを踏むことができますか?

編集 - 重要なセキュリティ上の注意:

Markの answer のようにこれを完全に行うことは不可能であることを理解してください。セキュリティ対策としてこれに頼らないでください。

141
Casebash

最大の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 &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ファイルであなたの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');

これはあなたのテーマやプラグインで使用される各スクリプトで行われる必要があります。

126
Chris_O

見逃されがちな1ビット - WordPressルートのreadme.htmlを削除してください。インストールをWPとして識別するだけでなく、正確なバージョンも持っています。そして更新を繰り返すのを忘れないでください。

関連する質問: アクセスを禁止する、またはreadme.html、license.txt、wp-config-sample.phpを自動削除する

45
Rarst

私はいつも ルーツテーマメソッド を使いました。
しかし、それらを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? に設定する際のあらゆる欠点について尋ねた)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のように表示されます。
サイトが稼働中の場合は、データベース内で検索/置換を行い、ファイルを移動する必要があります。
uploads folder settings


プラグインとヘッドコンテンツ

このQ&AのCris_O回答を参照してください。


Readme.html

このQ&AのRarst回答を参照してください。


その他のステップ

いつものように、ThemeJungleテーマはテーマの特定のハックを促すかもしれません。
のように... TimThumb 動作していません(!!! lol !!!)。

21
brasofilo

唯一の有効な答え:不可能

非常に多くの投票された回答がありました。実のところ、それは事実上不可能であり、たとえそれがあったとしても、人生はおそらくそれに努力を注ぐには短すぎるということです。 WPを隠すためのステップを促進するあらゆる答えは、あなたの時間の無駄であり、あなたがあなたのWPを隠していると思っていることを誤解させるでしょう(それは不合理です)。

1)問題は明白なwp-*のURL、ジェネレータのメタなどではありません。難しい問題は、自作システムが著者ページ、年、月、日ページのように実装しなくてもよいというワードプレスに関連するパターンにあります。 = nnnを有効なパラメータとして、ワードプレスのコメントクラス、構造、リンク名を含むコメントフォームを使用します。そうすると、キャッシングプラグインとヨーヨーSEO、そしておそらくHTML自体を調べるときにだけ見える他の多くのプラグインの自己宣伝があります。 。

2)WPの存在を示す他に数えられない方法があります(そしてそれを破ることはできません)。

  • Phpのresponse-header(私の答えの下のDan Gayleによって指摘されているように)でも、特定のWPヘッダを返します。

  • だれでも単に数十のルートの.phpファイルのどれかに問い合わせることができます:site.com/wp-cron.phpsite.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を保護し、それが定期的な更新を監視しているということです。

12
Mark Kaplun

あなたは1つのサーバー上にWordPressを持ち、あなたが必要とするコンテンツを含む他のものからあなたのコンテンツを削り取ることができます。

あなたがRSSを必要とするなら、あなたはそれと同じことをしなければならないでしょう。

事実上、プロキシやCDNから静的ページを配信するようなものですが、配信したいのはほんの少しだけです。その場合は、DisqusなどのJavaScriptベースのコメントシステムを使用することもできます。

本当にリソースの使用量が少ないため、ここではコンテンツを提供するサーバー上のデータベースはありません。

10
AndyBeard

あなたのブログにログインするためのあなたのカスタムアドレスを作成することができます。ダッシュボードへのアクセスに古典的な“ myblog.com/wp-admin”パスを使用しないことで、 このページ はステルスログインの作成に役立ちます。これはセキュリティ対策にも役立ちます。

だからあなたのブログにwp-adminを追加したpplは推測できないでしょう:)

7
mireille raad

上記に加えて、さまざまなwp*ファイルおよびディレクトリへのアクセスを制限する必要があります。あなたがWPを実行しているかどうかを知りたい人がいたら、彼らはあなたがwp-settings.phpを持っているかどうか、あるいは何らかのディレクトリにアクセスできるかどうかを推測するでしょう。 403を返すことは、リソースが存在することをユーザーに知らせるので十分ではありません。彼らはただそれにアクセスできない。

私はApacheのエキスパートではないので、 この質問に 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へのパスを変更します。他の構造体にも似たようなものを使用してください。高度な書き換えが必要になるかもしれません。さらなるmod_rewrite情報については http://httpd.Apache.org/docs/current/mod/mod_rewrite.html を参照してください。

箱から出して何かを好むのであれば、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インクルード
  • デフォルトのwp-includeパスをブロックする
  • デフォルトのwp-contentをブロックする
  • カスタムプラグインのURL
  • 個々のプラグインのURL変更
  • デフォルトのプラグインのパスをブロックする
  • 新しいアップロードURL
  • デフォルトのアップロードURLをブロックする
  • ワードプレス版を削除
  • メタジェネレータブロック
  • 絵文字と必要なJavaScriptコードを無効にします
  • Pingbackタグを削除
  • Wlwmanifest Metaを削除します。
  • Rsd_link Metaを削除します。
  • 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 AP​​Iが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>
2
cjbj

私はそれらが徹底的にカバーされているので、私はコーディングオプションを繰り返すことを望まない、私が知っている他のオプションはwpを隠すプラグインを使うことである。私は満足のいく基準に前にこのプラグインを使用しました。それは私のワードプレスを隠すと呼ばれる。

2
NJENGAH

テーマをカスタマイズして、すべてのWordPress情報を除外することができます。メタウィジェットやプラットフォームに関する情報を出力するウィジェットも削除してください。

個人的には、WordPressを使用していることを示すことで感謝の気持ちを表したいと思います。

0
James