web-dev-qa-db-fra.com

Comment empêcher Joomla de rapporter des informations d'erreur de base de données

J'étudie actuellement les vecteurs d'attaque par injection SQL dans mon application. Actuellement, Joomla signale une sortie d'erreur de la base de données en renvoyant une page d'erreur HTTP 500. Comment puis-je empêcher cela?

Le display_errors le paramètre est désactivé dans le fichier php.ini (même si je suppose généralement que cela n’est pas aussi pertinent pour les pages d’erreur résultant d’erreurs MySQL?), et j’ai défini 'Error Reporting' sur 'None' dans la page Joomla Server Settings, pourtant je reçois toujours l'erreur signalée. Exemple d'erreur en sortie ci-dessous.

1062 - Duplicate entry '!~!my_db!~!1' for key 'group_key' SQL=SELECT id, component, view, layout, task, field, link, content FROM
#__hint_text WHERE (component = 'com_mycomponent' OR component = '*') AND (view = 'someview' and(/**/sElEcT 1 /**/fRoM(/**/sElEcT count(*),/**/cOnCaT((/**/sElEcT(/**/sElEcT /**/cOnCaT(0x217e21,/**/dAtAbAsE(),0x217e21)) /**/fRoM information_schema./**/tAbLeS /**/lImIt 0,1),floor(Rand(0)*2))x /**/fRoM information_schema./**/tAbLeS /**/gRoUp/**/bY x)a) and '1'='1' OR view = '*') AND (layout = '' OR layout = '*' OR layout IS NULL)

Pour être clair, je n'ai pas besoin de conseils sur la façon de corriger les vecteurs d'attaque par injection SQL dans mon code - je veux juste savoir comment empêcher Joomla de révéler des informations là où il se peut que je rencontre une erreur de codage non encore détectée.

3
John Rix

La façon la plus simple de résoudre ce problème - est de créer un fichier error.php vide (sans aucun contenu) et de le placer dans votre dossier templates/yourtemplate (Si vous avez un fichier error.php, Remplacez-le simplement. avec ce fichier vide.

Personnellement, je pense que le fichier error.php devrait fournir le moins d’informations possible - et qu’il n’ya rien de moins qu’un fichier vide.

D'un autre côté, il est judicieux de renvoyer un en-tête 404 dans votre fichier error.php (uniquement l'en-tête 404), car une erreur 500 est généralement une invitation pour les pirates. Voir cet article pour savoir comment renvoyer 404 en-têtes sur votre site Web Joomla.

Les concepteurs ont tendance à s'inquiéter des pages d'erreur et de la façon de les rendre encore plus "fantaisistes", pensant que la plupart des visiteurs de ces pages sont de vraies personnes qui se sont égarées. Dans le monde réel, toutefois, la majorité absolue du trafic sur les pages d'erreur est un trafic malveillant (vous pouvez le vérifier en consultant les journaux de votre serveur).

1
itoctopus

Je commencerais par vérifier votre page d'erreur de modèle. Vous souhaiterez peut-être modifier la page située dans /templates/YOUR_TEMPLATE/error.php. Ce fichier signalera toutes les erreurs et remontera au début du processus. Essayez de commenter cette partie:

echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8');

Si vous n'avez pas un tel fichier dans votre modèle, le framework Joomla utilisera celui qui se trouve dans /templates/system/error.php. Assurez-vous donc que vous avez un remplacement de modèle et ne modifiez pas cette dernière version car elle risquerait d'être écrasée. si vous mettez à jour Joomla vers une version plus récente

2
Jeremy