it-swarm-vi.tech

Các bước cần thực hiện để che giấu sự thật một trang web đang sử dụng WordPress?

Tôi có một trang web mà chúng tôi đang cố gắng kín đáo về thực tế rằng chúng tôi đang sử dụng WordPress. Những bước chúng ta có thể làm để làm cho nó ít rõ ràng hơn?

EDIT- Lưu ý bảo mật quan trọng:

Vui lòng hiểu rằng làm điều này hoàn hảo là không thể theo câu trả lời của Mark , vì vậy đừng dựa vào điều này như một biện pháp bảo mật.

141
Casebash

Quà tặng lớn nhất của WordPress nằm giữa các thẻ <head> </head>.

Ví dụ đầu ra nội dung đầu WordPress của Chủ đề Twentyten và cách xóa:

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

Xóa trực tiếp khỏi header.php

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

Ẩn WordPress bằng cách gọi biểu định kiểu của bạn từ một vị trí khác và thay đổi thư mục wp-content. WordPress yêu cầu chủ đề của bạn bao gồm một số thông tin cơ bản ở đầu style.css (style.css phải nằm trong thư mục gốc của chủ đề). Bạn sẽ cần tạo một CSS thay thế và gọi nó từ đầu của bạn. WordPress không yêu cầu bạn sử dụng các style.css mà nó chỉ yêu cầu nó nằm trong thư mục chủ đề.

Xóa trực tiếp khỏi 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" /> 

Để xóa các liên kết bổ sung này, bạn có thể thêm bộ lọc vào hàm.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);

Bạn có thể thay đổi thư mục plugin và thư mục wp-content của bạn trong tệp wp-config.php nhưng bạn có thể gặp một số vấn đề nếu chủ đề hoặc bất kỳ plugin nào không sử dụng phương pháp thích hợp để gọi tệp.

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

Đặt WP_CONTENT_URL thành URI đầy đủ của thư mục này (không có dấu gạch chéo), ví dụ:.

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

Tùy chọn Đặt WP_PLUGIN_DIR thành đường dẫn cục bộ đầy đủ của thư mục này (không có dấu gạch chéo), ví dụ:.

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

Đặt WP_PLUGIN_URL thành URI đầy đủ của thư mục này (không có dấu gạch chéo), ví dụ:.

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

BỔ SUNG

Xin lưu ý rằng một số plugin như Akismat, All in One SEO, W3-Total-Cache, Super Cache và nhiều plugin khác thêm nhận xét vào đầu ra HTML. Hầu hết đều dễ dàng sửa đổi để xóa các nhận xét nhưng các thay đổi của bạn sẽ bị ghi đè bất cứ khi nào các plugin được cập nhật.

wp-bao gồm

Thư mục wp-gồm chứa jquery và các tệp js khác mà chủ đề hoặc plugin sẽ gọi bằng wp_enqueue_script (). Để thay đổi điều này, bạn sẽ cần hủy đăng ký các tập lệnh WordPress mặc định và đăng ký vị trí mới. Thêm vào hàm.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');

Điều này sẽ cần phải được thực hiện với mỗi tập lệnh được sử dụng bởi chủ đề hoặc plugin của bạn.

126
Chris_O

Một bit thường bị bỏ lỡ - xóa readme.html trong root WordPress. Nó không chỉ xác định cài đặt là WP mà còn có phiên bản chính xác. Và đừng quên lặp lại trên các bản cập nhật.

Câu hỏi liên quan: Ngăn chặn truy cập hoặc tự động xóa readme.html, License.txt, wp-config-sample.php

45
Rarst

Tôi đã luôn sử dụng phương thức Roots Theme .
[.__.] Nhưng áp dụng nó cho những người ThemeJungle ngoài kia thường là một vấn đề đau đầu.

Vì vậy, bắt đầu chơi với các hằng số WP_CONTENT_*. Mà tôi tin là một phương pháp dễ bị lỗi hơn nhiều và đây là những gì tôi đã làm việc ngay bây giờ:

safari activity window
/m là thư mục uploads, /t là thư mục themes/t/t là thư mục chủ đề đang hoạt động. Trang web không phức tạp, nên có rất ít tài sản được tải ...


WP_CONTENTLESS

wp-config.php

Đặt wp-content thành thư mục gốc (/public_html/) của trang web.

/** 
 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' );

Tôi đã hỏi về điều đó trong [wp-hackers] - Có bất kỳ hạn chế nào trong việc đặt WP_CONTENT_DIR (và URL) thành DOCUMENT_ROOT không? , nơi John Blackbourn1, Mike nhỏ2 và Otto3 đủ tử tế để khuyên:

1
[.__.] Tôi đã có cấu trúc này hoạt động trên một trang web trong 18 tháng qua và không thấy bất kỳ vấn đề nào. Giống như bất kỳ thay đổi nào đối với vị trí của thư mục nội dung, bạn sẽ cần kiểm tra lại mọi plugin bạn thêm vào trang web, đừng cho rằng thư mục nội dung nằm ở wp-content.

2
[.__.] Có nhiều cuộc thảo luận trên mạng, $_SERVER['DOCUMENT_ROOT'] có thể dễ bị hack. Trong trường hợp này, điều này cực kỳ nguy hiểm vì có rất nhiều nơi mà require() hoặc include()WP_CONTENT_DIR. "Một cái gì đó";

3
[.__.] Có những trường hợp nội dung trong $_SERVER có thể hoàn toàn an toàn, nhưng vì mục đích bảo mật, tốt hơn là luôn coi nó là dữ liệu không đáng tin cậy. Đối với trường hợp cụ thể này, hardcode thư mục.


Thư mục chủ đề mới

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

Vì không có hằng số WP_THEMES_*, chúng ta cần hàm register_theme_directory () to "Đăng ký thư mục chứa chủ đề."
[.___.] Đã thử đặt thư mục phụ vào thư mục gốc nhưng kết quả là buồn cười (tức là: nó không hoạt động).

<?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' );
    }
}

Thư mục tải lên

/wp-admin/options-media.php

Thay vì http://example.com/uploads, nó sẽ là http://example.com/m.
[.___.] Bỏ chọn Organize my uploads into... sẽ xuất hiện WPless cho các URL tài sản.
[.__.] Nếu trang web đang hoạt động, việc tìm kiếm/thay thế phải được thực hiện trong cơ sở dữ liệu và các tệp phải được di chuyển xung quanh.
uploads folder settings


Plugin và nội dung chính

Tham khảo Cris_O Trả lời trong Hỏi & Đáp này.


Readme.html

Tham khảo Rarst Trả lời trong Hỏi & Đáp này.


Các bước khác

Như thường lệ, các chủ đề của ThemeJungle có thể Nhắc các bản hack cụ thể trong chủ đề.
[.__.] Giống như ... TimThumb không hoạt động (!!! lol !!!).

21
brasofilo

Câu trả lời hợp lệ duy nhất: TUYỆT VỜI

Vì vậy, nhiều câu trả lời được bình chọn cao .... thời gian để thiết lập kỷ lục thẳng. Chà, sự thật là nó gần như không thể và thậm chí nếu có, cuộc sống có lẽ quá ngắn để nỗ lực vào nó. Bất kỳ câu trả lời nào, điều đó thúc đẩy các bước để ẩn WP chỉ là lãng phí thời gian của bạn và sẽ đánh lừa bạn nghĩ rằng bạn đang che giấu WP (điều đó thật vô lý).

1) Vấn đề không phải là các url wp-* rõ ràng, meta trình tạo, v.v ... Các vấn đề khó khăn là với các mẫu có liên quan đến wordpress mà một hệ thống phát triển gia đình sẽ không bận tâm để thực hiện như trang tác giả, trang năm, tháng, ngày = nnn là một tham số hợp lệ, có dạng nhận xét với lớp nhận xét wordpress, cấu trúc và tên liên kết và sau đó là tự quảng cáo các plugin lưu trữ và SEO yoast và có thể nhiều plugin khác mà bạn chỉ thấy khi bạn tự kiểm tra HTML .

2) Có các phương thức chưa đếm khác cho thấy sự tồn tại của WP (và bạn không thể đánh bại điều đó):

  • Ngay cả tiêu đề phản hồi php (như Dan Gayle ghi chú bên dưới câu trả lời của tôi) cũng trả về tiêu đề WP cụ thể.

  • Bất cứ ai cũng có thể truy vấn bất kỳ tệp .php gốc nào: site.com/wp-cron.php hoặc site.com/xmlrpc.php (hoặc vv, mà bạn không thể ẩn) và câu trả lời tiêu đề sẽ là 200 thay vì 404 not found.

  • bất cứ ai cũng có thể kiểm tra có điểm cuối json để nhận WP câu trả lời cụ thể.

  • Trong trang HTML, nhiều tệp .css hoặc .js có một cụm từ cụ thể, trong đó đề cập rõ ràng đến WP.

  • Bên trong trang HTML, thật dễ dàng tìm thấy các lớp phần tử/css, như <div class="entry-content post-14"... hoặc vv (đó là một gợi ý trực tiếp rằng cấu trúc được sử dụng là của WP)

  • Trong trang HTML, bạn sẽ dễ dàng thấy thư mục uploads hoặc ngay cả khi bạn đổi tên bằng mã hóa cứng, thì phần ngày như uploads/2018/05/image.jpg (hoặc thậm chí image-315x225.jpg) hiển thị cấu trúc WP điển hình.

  • vì nhiều trang web hiện được xây dựng bằng MultiSite, nó sử dụng tức là /site/2 trong các liên kết ...

  • ping đến bất kỳ plugin/chủ đề readme nào (tất cả chúng đều chứa), như plugin-name/readme.txt, trả về trạng thái 200.

  • và nhiều, rất nhiều, rất nhiều thứ khác mà bạn (hoặc thậm chí là chuyên gia) sẽ không thể che giấu và sẽ chỉ lãng phí ngày của bạn!


phần kết luận

Và ngay cả khi bạn nỗ lực dọn dẹp mọi thứ chỉ ra rằng đây là một wordpress, bạn có thể cần phải làm lại hoặc ít nhất là kiểm tra lại sau mỗi lần nâng cấp plugin hoặc cốt lõi. Cuộc sống chỉ là quá ngắn cho điều đó.

Bạn có thể đánh lừa một số người mặc quần áo, nhưng bạn không thể trốn tránh một thanh tra giỏi. Nếu điều này được thực hiện như một biện pháp bảo mật thì đó là bảo mật bởi sự tối nghĩa luôn luôn sai và nếu bạn cảm thấy xấu hổ khi sử dụng wordpress, thì hãy để tôi nói cho bạn điều gì đó - không ai quan tâm, và thậm chí rất ít người có thể sẽ không biết làm thế nào để tìm ra nó bởi chính họ.

Điều duy nhất bạn nên quan tâm là bạn bảo vệ WP càng nhiều càng tốt và theo dõi các cập nhật thường xuyên của nó.

12
Mark Kaplun

Bạn có thể có WordPress trên một máy chủ và quét nội dung của bạn từ một máy chủ khác chỉ bao gồm nội dung bạn cần.

Nếu bạn cần RSS, bạn sẽ phải làm điều tương tự với điều đó.

Thực tế, nó giống như phục vụ các trang tĩnh từ proxy hoặc CDN, nhưng chỉ các bit bạn muốn phân phối. Sau đó, bạn cũng có thể sử dụng một hệ thống bình luận dựa trên javascript như Disqus.

Sử dụng tài nguyên thực sự thấp, vì ở đây không có cơ sở dữ liệu trên máy chủ phục vụ nội dung.

10
AndyBeard

Bạn có thể tạo địa chỉ tùy chỉnh để đăng nhập vào blog của bạn. Bằng cách không sử dụng đường dẫn myblog.com/wp-admin cổ điển để truy cập trang tổng quan của bạn Trang này sẽ giúp bạn tạo thông tin đăng nhập lén lút, điều này cũng tốt cho các biện pháp bảo mật.

Vì vậy, người ppl đã thêm wp-admin vào blog của bạn, sẽ không thể đoán được :)

7
mireille raad

Ngoài những điều trên, bạn cần khóa quyền truy cập vào các tệp và thư mục wp* khác nhau. Nếu ai đó muốn xem bạn có đang chạy WP họ có thể đoán xem bạn có wp-settings.php không hoặc liệu họ có thể truy cập thư mục nào đó không. Trả lại 403 là không đủ vì nó cho người dùng biết rằng tài nguyên tồn tại; họ không có quyền truy cập vào nó.

Tôi không phải là chuyên gia về Apache nên tôi đã hỏi câu hỏi này trên serverfault.

5
Avery Chan

Điều này có thể khó đạt được nếu bạn chưa quen với php và mod_rewrite. Tôi đề nghị để bạn kiểm tra với phần trả lời của tôi. Hoặc tự mình thử, bạn có thể sử dụng một cái gì đó như thế này để ẩn cấu trúc đường dẫn wp-content/plugin:

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

Điều này sẽ thay đổi đường dẫn đến/mô-đun. Sử dụng một cái gì đó tương tự cho cấu trúc khác, bạn có thể cần một số cách viết nâng cao, xem http://httpd.Apache.org/docs/cản/mod/mod_rewrite.html để biết thêm thông tin mod_rewrite.

Nếu thích thứ gì đó vượt trội, có một vài plugin Nice, một số quảng cáo, cũng miễn phí tại kho WordPress, tôi khuyên bạn nên thử WP Hide & Security Enhancer . Điều này bao gồm rất nhiều thứ và giúp thay đổi khá nhiều thứ để làm cho WordPress của bạn không thể nhận ra. Dưới đây là một số tính năng của mã:

  • Url quản trị tùy chỉnh
  • Url quản trị tùy chỉnh
  • Chặn Url quản trị mặc định
  • Chặn mọi truy cập thư mục trực tiếp để ẩn hoàn toàn cấu trúc
  • Tên tệp wp-login.php tùy chỉnh
  • Chặn mặc định wp-login.php
  • Chặn mặc định wp-đăng ký.php
  • Chặn API XML-RPC
  • Đường dẫn XML-RPC mới
  • Url chủ đề điều chỉnh
  • Url chủ đề con mới
  • Thay đổi tên tệp kiểu chủ đề
  • Bao gồm tùy chỉnh wp
  • Chặn các đường dẫn bao gồm wp-mặc định
  • Chặn chặn nội dung wp
  • Các plugin tùy chỉnh
  • Thay đổi url plugin cá nhân
  • Chặn đường dẫn plugin mặc định
  • Url tải lên mới
  • Chặn các url tải lên mặc định
  • Xóa phiên bản wordpress
  • Khối máy phát điện meta
  • Tắt biểu tượng cảm xúc và mã javascript cần thiết
  • Xóa thẻ pingback
  • Xóa Meta wlwmanifest
  • Xóa rsd_link Meta
  • Xóa wpemoji

và nhiều cái khác..

3
WP-Silver

Đừng quên rằng rất nhiều thông tin tiêu đề http được gửi cùng với yêu cầu của bạn có thể xác định trang web của bạn đang chạy trên WordPress. Ví dụ: nếu bạn kiểm tra các tiêu đề trên các trang web sau, thì rõ ràng:

$ 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

Một số được cài đặt bởi máy chủ, một số được đặt bởi các plugin, vì vậy tôi không có cách nào để nói cách loại bỏ 100% trong số chúng, nhưng nếu bạn đang sử dụng PHP 5.3 bạn có thể sử dụng

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

để xóa tiêu đề PHP đã biết trước khi nội dung của bạn bị loại bỏ. Tôi không thể nói chắc chắn nơi đặt cái này (có thể người khác có thể điền thông tin đó), nhưng có lẽ an toàn khi đặt nó ở đầu chỉ mục của bạn.php TRƯỚC bất kỳ nội dung nào được gửi tới trình duyệt.

3
Dan Gayle

Hầu hết các câu trả lời tập trung vào việc che khuất WordPress trong mã nguồn của một trang, nhưng ngay cả trước đó WP đã tự bỏ đi trong tiêu đề http của bản cài đặt chuẩn. Chỉ cần thử trang web của riêng bạn trên một trang web như web-sniffer (giả vờ là IE 6 và yêu cầu tiêu đề http 1.0) và bạn sẽ thấy rằng trong số các trả về là:

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

Cái sau là một liên kết đến Wordpress.org API . Nó ở đó vì API REST được bao gồm trong WP 4.4. Bạn có thể xóa nó bằng dòng này ngay khi bắt đầu functions.php:

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

Nhiều plugin, như Jetpack cho các liên kết ngắn của nó, cũng có thể chèn các liên kết trong tiêu đề http. Họ có thể làm như vậy, vì WP có API HTTP , cho phép bạn thao tác các tiêu đề. Bạn có thể sử dụng giao diện này để xóa tất cả các cài đặt tiêu đề bằng các plugin nếu bạn thêm hành động của mình đủ muộn trong quy trình.

Cuối cùng, bạn có thể sử dụng .htaccess giao diện tiêu đề để chặn mọi thứ WP đang làm. Ví dụ: bạn có thể ngăn bất kỳ tiêu đề Liên kết nào được gửi bằng cách bao gồm dòng này:

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

Tôi không muốn lặp lại các tùy chọn mã hóa vì chúng đã được bảo vệ toàn diện, tùy chọn khác tôi biết rằng hoạt động là sử dụng một plugin ẩn wp. Tôi đã sử dụng plugin này trước khi đạt tiêu chuẩn thỏa đáng. Nó được gọi là ẩn WordPress của tôi.

2
NJENGAH

Bạn có thể tùy chỉnh một chủ đề để loại trừ tất cả thông tin WordPress. Đồng thời xóa tiện ích meta và bất kỳ tiện ích nào sẽ xuất thông tin về nền tảng.

Cá nhân, tôi thích thể hiện lòng biết ơn của mình bằng cách hiển thị rằng tôi đang sử dụng WordPress.

0
James