Manual:Zabezpečení hesel databáze

This page is a translated version of the page Manual:Securing database passwords and the translation is 100% complete.

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
  • chmod 640 mysql_pw.php (odstraní přístupová práva ostatním a práva zápisu z webového serveru)
  • (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.

Pokud provádíte tyto změny a nemáte přístup k uživatelům, protože vám to váš poskytovatel webového serveru nedovolil, pak z ftp musíte nastavit minimální práva pro svůj "external_includes": 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.
Pokud nemůžete vytvářet žádné soubory mimo váš webroot, můžete stále dosáhnout určité ochrany tím, že projdete výše uvedeným procesem a použijete název souboru jako ".htdbpasswd" ve svém webovém kořenovém adresáři namísto "mysql_pw.php", protože většina webových serverů je nakonfigurována tak, aby odmítala přístup. na všechny soubory začínající .ht*

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