J'étais en train d'exécuter des tests de sécurité sur mes applications WordPress et j'ai remarqué qu'elles ont toutes un chemin d'accès complet sur l'URL suivante. Je suis sûr que l'on a déjà répondu à cette question mais je ne trouve aucune information à ce sujet.
https://mydomains.com/wp-includes/rss-functions.php
Le message d'erreur lorsque vous accédez au lien est Appel à la fonction non définie _deprecated_file () dans /home/mydomain/public_html/wp-includes/rss-functions.php à la ligne 8.
Je n'ai rien dans mes thèmes pour RSS.
Edit: Après des recherches approfondies, cela semble être un problème courant sur la plupart des sites WordPress. Les solutions que j'ai trouvées en ligne ne résolvent pas réellement l'erreur. Ils disent simplement de cacher le rapport d'erreur dans le fichier php.ini. Cela ne résout pas le problème et tout le monde n'a pas accès au fichier php.ini en fonction de la situation de leur hébergement.
Les fichiers PHP dans le répertoire wp-includes ne doivent pas être accessibles de l'extérieur, ils doivent uniquement être inclus avec du code wordpress. Par conséquent, une solution simple consiste à utiliser des règles .htaccess pour bloquer l’accès aux fichiers * .php situés dans le répertoire wp-includes.
C'est pratiquement la seule option pour désactiver la journalisation des erreurs/avertissements php. Il y a 2 options pour le faire et une autre qui n'est pas très bonne:
http://phphtml.info/how-to-fix-wordpress-internal-pathfull-path-disclosurefpd-issue/
WP Scan accède directement à wp-includes/rss-functions.php
, et c'est son code source, à partir de 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' );
Lorsqu’on y accède directement, la fonction _deprecated_file()
n’existe pas et génère une erreur fatale.
La solution consiste à désactiver display_errors
au niveau du serveur. Si votre PHP s'exécute sous mod_Apache, vous pouvez le faire en ajoutant cette ligne à votre fichier .htaccess principal:
php_flag display_errors off
Si vous utilisez PHP-FPM, vous devrez probablement remplacer php.ini dans votre dossier local public_html.