Autor Zpráva
phpcssmysql
Profil
Chtěl bych prosím o radě - jak ochránit informaci o spojení k MySQL.
Popíšu Vám problém, který se týká o bezpečnosti:

Například:

index.php je zdojový kód PHP:

<?php
    include 'config/db_connect.php';    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="content-type" />
    <meta content="index, follow, noarchive" name="robots" />
    <title>Administrační systém</title>
</head>
<body>
<form action="index.php" method="post" name="prihlaseni">
<input id="uzivatel_jmeno" type="text" />
<input id="uzivatel_heslo" type="password" />
<input id="potvrzeni" type="submit" value="PŘIHLÁSIT" />
</form>
</body>
</html>
<?php mysql_close($pripojeni); ?>

db_connect.php je zdojový kód PHP:

<?php
    $host = '....';
    $uzivatel = '....';
    $heslo = 'nejakeheslo';
    $databaze = '....';
    $pripojeni = mysql_connect($host, $uzivatel, $heslo) or die('Nemohu se připojit k databázi.');
    mysql_select_db($databaze, $pripojeni) or die(mysql_error($pripojeni));
    mysql_query('SET NAMES UTF8');
    mysql_query('SET COLLATION_CONNECTION = utf8_czech_ci');
?>

Pak já mohu naprogramovat jednoduchý kód v PHP - jak zjistit heslo, díky známé proměnné mohu získat přesné heslo, například:

najit_heslo.php:

<?php
    include 'config/db_connect.php';
    echo $heslo;
?>

Jak to mám zabránit, aby někdo nezneužili heslo, protože hloupí programátoři možná používají primitivní proměnnou.

Zádám o Vás jako podporu, jak to mám zabránit :-))), aby bylo vše bezpečné.

Budu se těšit, až mi sem někdo napíše, jinak Vám budu poděkovat hodně...
Jan Tvrdík
Profil
phpcssmysql:
Pokud někdo zlý a cizí může na tvůj web nahrát libovolný PHP skript (jako např. najit_heslo.php), tak děláš něco špatně :)
Jak se domníváš, že se tam takový soubor dostane?
Davex
Profil
phpcssmysql:
V uvedeném konkrétním případě by pomohlo přidat na konec skriptu db_connect.php:

unset($host, $databaze, $uzivatel, $heslo);

Ale heslo půjde stejně zjistit, když si někdo přečte přímo zdrojový kód toho skriptu.
phpcssmysql
Profil
Nene, například na ten stavající web patří jinému majitelovi - http://jinymajitel.com/, a na můj web - http://mujmajitel.com/ přidám jeden skript PHP:

<?php
include 'http://www.jinymajitel.com/config/db_connect.php';
echo $heslo;
?>

Pak už jsem zjistil heslo...
Jak to zabránit? Například aspoň šifrovaně?


Davex:
No právě, jak na to zabránit???
Davex
Profil
phpcssmysql:
Pak už jsem zjistil heslo...
Z jiné domény nezjistil. PHP se interpretuje a výsledkem je prázdná HTML stránka, kde žádné heslo vidět není.
Jan Tvrdík
Profil
phpcssmysql:
Nikoliv, takhle to nefunguje. To by stránka http://www.jinymajitel.com/config/db_connect.php musela vracet PHP kód. V tomto konkrétním případě ale vrací jen prázdnou stránku, protože skript db_connect.php nic nevypisuje.

Je ale dobrým zvykem do složky config obsahující skript db_connect.php umístit soubor .htaccess s obsahem Deny from all , který úplně zablokuje přístup z webu ke všem souborům v dané složce.
phpcssmysql
Profil
Davex:
Máte pravdu, klobouk dolů...


Jan Tvrdík:
Pravda, mě to nenapadlo tam dát hned .htaccess, a takže moc děkujeme, a doufám pevně, že bude stále chráněný :-)
A jeden další dotaz: je možné provádět všechny proměnné - HOST, USER, DATABASE a SERVER v šifrovací podobě?
Jan Tvrdík
Profil
phpcssmysql:
je možné provádět všechny proměnné - HOST, USER, DATABASE a SERVER v šifrovací podobě?
Netuším, co si pod tím představuješ, ale nedělej to :)
phpcssmysql
Profil
Jan Tvrdík:
:-) jenom se proto ptám :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: