Manual:Zabezpečení hesel databáze
LocalSettings.php ve výchozím nastavení obsahuje ID uživatelů a hesla databáze MySQL. Uchování těchto přihlašovacích údajů v LocalSettings.php je riskantní, protože za výjimečných podmínek mohou být soubory PHP poskytnuty jako prostý text, který tyto přihlašovací údaje odhalí světu:
- PHP je na serveru zakázáno
- Samotné PHP se rozbije
- Máte CGI search.pl (běžný vyhledávací skript CGI) kdekoli v této doméně. Popis exploitu.
Pokud v těchto vzácných případech chcete své uživatelské jméno a heslo MySQL udržet v tajnosti, neměly by být součástí souboru LocalSettings.php.
Hesla MySQL mimo Webroot
Svá hesla MySQL byste nikdy neměli vkládat do textového souboru, který je v kořenovém adresáři webu. Můžete se tomu vyhnout takto:
- Vytvořte adresář mimo váš webový kořenový adresář. Pokud se například váš web nachází na adrese "
/htdocs/www-wiki
", vytvořte si adresář s názvem "external_includes" mimo svůj webroot:mkdir /external_includes
- Vytvořte soubor v adresáři, který jste právě vytvořili, nazvaný něco jako "mysql_pw.php" a umístěte proměnnou na samostatný řádek pro každé vaše uživatelské jméno mysql, heslo, název hostitele a název databáze, přičemž každá proměnná bude nastavena na skutečné hodnoty. Například pomocí nano jako editoru:
nano /external_includes/mysql_pw.php
- Napište následující řádky samozřejmě s použitím skutečných hodnot namísto "mysql_" v závorce:
<?php
$wgDBserver = "[mysql_host]";
$wgDBname = "[mysql_db_name]";
$wgDBuser = "[mysql_user]";
$wgDBpassword = "[mysql_password]";
// more confidential data...
?>
- Dbejte na to, aby za textem nebyly žádné mezery (prázdné řádky).
- Uložte a zavřete soubor. V nano je to: Ctr+O (uložit) a Ctr+X (zavřít)
Ověřte si u svého distribuce uživatele webového serveru. To se liší a příklady zahrnují "apache", "www-data", "nobody", "httpd". Poté nastavte oprávnění pro soubor s hesly takto:
chgrp apache mysql_pw.php
(odstraní přístupová práva ostatním a práva zápisu z webového serveru)chmod 640 mysql_pw.php
- (pravděpodobně opakujte s g-rxw ... pro LocalSettings.php )
- Ujistěte se, že vlastník souboru má
r
(nebo
)chmod 400 LocalSettings.php
- Upravte svůj soubor LocalSettings.php a na začátek souboru přidejte následující řádek:
require_once "/external_includes/mysql_pw.php"; //require_once "[FULL ABSOLUTE PATH TO mysql_pw.php]";
- Nyní odstraňte tyto proměnné z LocalSettings.php:
$wgDBserver $wgDBname $wgDBuser $wgDBpassword
Tímto způsobem, pokud je někdo schopen přistupovat a zobrazit LocalSettings.php, uvidí pouze některá nastavení, nikoli heslo, uživatelské jméno atd. do vaší databáze MySQL a skutečný soubor obsahující tyto informace je pro webový server zakázán. Stále se musíte ujistit, že LocalSettings.php je pouze pro čtení pro uživatele apache, jak je popsáno výše.
drwx--x--x
(711). Pro soubor "mysql_pw.php" budete muset nastavit rw-r--r--
(644), jinak vaše wiki nepoběží. Vaše heslo je přesto bezpečné, protože soubor s kritickými informacemi je mimo webový přístup.
Související odkazy
- Nastavení $wgSMTP pro odesílání e-mailů obsahuje uživatelské jméno a heslo. Lze jej zabezpečit stejným způsobem