私は私のWordPressアプリケーションでセキュリティテストを実行していましたが、それらのすべてが次のURLで完全なパス情報開示をしていることに気付きました。私はこれが以前に答えられたと確信しています、しかし、私はこれに関する情報を見つけることができません。
https://mydomains.com/wp-includes/rss-functions.php
リンクに移動したときのエラーメッセージは、8行目の/home/mydomain/public_html/wp-includes/rss-functions.php内の未定義関数_deprecated_file()への呼び出しです
RSSのテーマには何もありません。
編集:これ以上の調査の結果、これはほとんどのWordPressサイトで共通の問題と思われます。私がオンラインで見つけた解決策は実際にはエラーを修正していません。彼らは単にphp.iniでエラー報告を隠すと言っています。それでも問題は解決しません。ホスティングの状況によっては、誰もがphp.iniにアクセスできるわけではありません。
Wp-includesディレクトリにあるPHPファイルは、外部からアクセスできないようにする必要があります。それらはワードプレスコードによってのみ含まれるべきです。そのため、これに対する簡単な修正は、.htaccessルールを使用して、wp-includesディレクトリの下にある* .phpファイルへのアクセスをブロックすることです。
Phpのエラー/警告ログを無効にすることが、実質的に唯一の選択肢です。それには2つの選択肢があり、もう1つはそれほど良くありません。
http://phphtml.info/how-to-fix-wordpress-internal-pathfull-path-disclosurefpd-issue/
WP Scanはwp-includes/rss-functions.php
に直接アクセスします。これはWordPress 4.9.7以降のソースコードです。
<?php
/**
* Deprecated. Use rss.php instead.
*
* @package WordPress
*/
_deprecated_file( basename(__FILE__), '2.1.0', WPINC . '/rss.php' );
require_once( ABSPATH . WPINC . '/rss.php' );
直接アクセスした場合、_deprecated_file()
関数は存在しないため、致命的なエラーが発生します。
解決策は、サーバレベルでdisplay_errors
を無効にすることです。 PHPがmod_Apacheの下で実行される場合は、メインの.htaccessファイルに次の行を追加して実行できます。
php_flag display_errors off
PHP-FPMを使用している場合は、おそらくローカルのpublic_htmlフォルダにあるphp.iniを上書きする必要があります。