Umístění přihlašovacích údajů databáze

Školení, která pořádám

Lidi se mě často ptají, kam je vhodné ukládat přihlašovací údaje pro přístup k databázi. Osobně mi nedělá potíže je uložit přímo do PHP kódu a pokud je server správně zabezpečený, neměl by se k nim nikdo dostat. Pokud mají být zdrojáky volně přístupné, je nutné buď soubor s přihlašovacími údaji ošetřovat odlišně nebo je nutné přihlašovací údaje uložit jinam.

Pro uložení přihlašovacích údajů se dají použít direktivy mysql.default_user a mysql.default_password vložené buď přímo do konfiguračního souboru Apache (takže tento soubor bude muset být běžným uživatelům nečitelný a změnu přihlašovacích údajů bude muset dělat administrátor) nebo do souboru z něj vloženého. Pokud případný restart Apache bude provádět root, může tento soubor patřit běžnému uživateli a pro všechny ostatní být nečitelný. To mi přijde jako nejlepší řešení.

Jakub Vrána, Řešení problému, 10.2.2006, diskuse: 3 (nové: 0)

Diskuse

ikona spaze:

U mysql.default_user a mysql.default_password je třeba dávat pozor, aby se ty údaje nedostaly na veřejnost např. pomocí phpinfo(). A všichni víme na kolika webech se takový volání bežně vyskytuje ;)

Trochu lép^Wjinak to má řešeno PDO, a to pomocí pdo.dsn.* aliasů. Jenže ty prý jdou zas nastavit jenom v php.ini.

Birkof:

A co třeba vytvořit adresář třeba CONFIG a do něj uložit soubor .htaccess s obsahem "deny from all". Tím dosáhnete toho, že budete mít adresář do kterého se z venku nikdo nedostane, ale serverový program ano.

ikona spaze:

"ale serverový program ano"

V tom právě může být ten problém, pokud bude v nějakém skriptu chyba (a nemusí to být jen náš skript), tak ten má po serveru docela volný pohyb (v rámci nastavených mezí) a tak může i do toho adresáře, kde je přístup přes HTTP zakázán.

Osobně mám přístupy také v PHP souborech (ono to ani moc jinde nejde, viz můj předchozí příspěvek), ale veškerý požadavky proháním přes centrální /dispatcher/, takže se přímo přes HTTP na soubory nikdo nedostane.

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.