web-dev-qa-db-fra.com

Quelle est l'utilisation de mysql.safe_mode dans le fichier php.ini?

J'ai vu un site web sur la sécurité qui recommande d'activer mysql.safe_mode dans php.ini

# Enable SQL safe mode
sql.safe_mode = On

Quand j'ai cherché dur pour trouver des informations à ce sujet, j'ai trouvé ceci:

Si l'option Mode sans échec SQL est activée, les extensions MySQL et Ingres ignorent les informations fournies sur l'hôte, l'utilisateur et le mot de passe et n'utilisent que les valeurs par défaut.

À en juger par le son, cela ressemble vraiment à un mode dangereux que le mode sans échec. Cela ne signifie-t-il pas que, même si l'application (disons Joomla) fournit à un utilisateur mysql des privilèges moindres, permettre à mysql d'utiliser l'utilisateur root par défaut? Ai-je mal compris ce qu'il fait? Quel est l'avantage de permettre sql.safe_mode en php?

3
Neel

Pour utiliser safe_mode , définissez l'hôte, le nom d'utilisateur et le mot de passe de votre base de données dans php.ini à l'aide des paramètres de configuration:

sql.safe_mode = On
mysqli.default_Host = "127.0.0.1"
mysqli.default_port = "3306"
mysqli.default_user = "root"
mysqli.default_pw = "Password123"

En le configurant là-bas, vous n'en aurez plus besoin dans vos scripts PHP, ce qui vous permettra de mettre à jour votre mot de passe MySQL à partir d'un endroit donné, tout en protégeant votre code source du mot de passe afin de vous éviter de le faire. continuez à supprimer manuellement le mot de passe avant de vous engager dans les référentiels de contrôle de version de code source, etc.

Dans vos scripts PHP, au lieu d'utiliser:

<?php
$oDB = new mysqli( "127.0.0.1", "root", "Pass123", "database_name", "3306" );

Vous pourriez utiliser:

<?php
$oDB = new mysqli();
$oDB->select_db( "database_name" );
5
richhallstoke