Strona 1 z 4

widoczne hasło w pliku php

: 10 lipca 2007, 01:19
autor: ponton
Witam.

Wiele aplikacji PHP wykorzystuje dostęp do bazy danych. Przy instalacji trzeba to hasło podać. Następnie hasło jest trzymane w pliku (np. config.php), do którego każdy ma dostęp (np. z shella). Czy jest jakiś sposób, żeby zabezpieczyć to hasło? ¯eby skrypt mógł czytać ten plik z hasłem, ale żeby on nie miał +r?

Pozdrawiam.

: 10 lipca 2007, 09:01
autor: ruun
ponton pisze:¯eby skrypt mógł czytać ten plik z hasłem, ale żeby on nie miał +r?
hehe, to chyba nie jest możliwe, może spróbuj zakodować hasło (md5).

: 10 lipca 2007, 09:46
autor: miszmaniac
Najlepiej zrób sobie plik w /etc/... np w /etc/php_includes/baza.php
o treści
<?php
$uztykownik_bazy=login
$haslo=...

?>
Zmień

Kod: Zaznacz cały

chown www-data:www-data nazwa_katalogu
(jeśli nie zadziała tak to root:root)
A potem

Kod: Zaznacz cały

chmod 700 nazwa_katalogu
Oczywiście, nie na całe etc tylko na ten katalog który utworzyłeś w środku.

Potem w skryptach php zamiast tych linijek dopisuj

Kod: Zaznacz cały

include("/etc/php/hasla.php");
Powinno zadziałać. Ja w taki sposób zawsze piszę.

PS. Hasła pozostają niezakodowane, ale nie są widzialne dla użytkowników.
Co do md5, to chyba nie jest dobre rozwiązanie, bo nawet jeśli hasło jest zakodowane, to w 30sekund można je rozkodować, więc ta metoda 'szyfrowania' na niewiele się nada :)

: 10 lipca 2007, 11:02
autor: jaSS
Można zaszyfrować, istnieje wiele rozwiązań. Jedne tańsze drugie droższe, jedne leprze drugie gorsze ;)

Np podstawowy: Zend Encoder który działa na większości platform bez doinstalowywania czegokolwiek.

Wpisz w google i napewno znajdziesz mase rozwiązań, kiedyś miałem jakiś darmowy (wymagal tylko dokompilowania do php) jak sobie przypomne link to wkleje.

: 10 lipca 2007, 12:20
autor: jang
ponton pisze:hasło jest trzymane w pliku (np. config.php), do którego każdy ma dostęp (np. z shella).
Ja tak z czystej ciekawości :
mam konto na jakimś serwerze i plik config.php

Kod: Zaznacz cały

<?php  if ( ! defined( 'DIR_LIB' ) ) exit( 'No direct script access allowed' )] = true;
...
?>
i jak z shella chcesz się do niego dobrać ? (zakładam że nie jesteś adminem)
miszmaniac pisze:Najlepiej zrób sobie plik w /etc/... np w /etc/php_includes/baza.php
Na serwerze masz dostęp do katalogu /etc ?

ponton
W katalogu ~/public_html utwórz sobie katalog np. /Config i chmod 700 a w nim trzymaj wszystkie pliki do których ma mieć dostęp tylko skrypt, a jeszcze lepiej utworzyć taki katalog powyżej public_html

Do kodowania możesz użyć np. SHA1

Pozdrawiam

: 10 lipca 2007, 13:01
autor: miszmaniac
jang pisze:Na serwerze masz dostęp do katalogu /etc ?
Jasne, przynajmniej dla roota, a niby jak apache odczytałby konfigurację?
W /etc/ tylko niektóre pliki nie mają praw do odczytu dla ogółu, np. shadow

: 10 lipca 2007, 13:04
autor: jaSS
jang pisze:Ja tak z czystej ciekawości :
mam konto na jakimś serwerze i plik config.php
Kod:
<?php if ( ! defined( 'DIR_LIB' ) ) exit( 'No direct script access allowed' )] = true;
...
?>
i jak z shella chcesz się do niego dobrać ? (zakładam że nie jesteś adminem)
Najprostszym sposobem:

Kod: Zaznacz cały

echo file_get_contents('/sciezka/do/twojego/pliku/config.php');
A w necie jest mase skryptów do przegladania dysku poprzes php ;)

: 10 lipca 2007, 14:02
autor: jang
miszmaniac pisze:
jang pisze:Na serwerze masz dostęp do katalogu /etc ?
Jasne, przynajmniej dla roota, a niby jak apache odczytałby konfigurację?
W /etc/ tylko niektóre pliki nie mają praw do odczytu dla ogółu, np. shadow
Jednym słowem bogaty jesteś skoro jesteś właścicielem wszystkich serwerów w sieci że wszędzie jesteś root'em, no chyba że masz tak dobre znajomości że wszędzie nadają Ci prawa root'a.
Może i mnie załatwisz takie konto.
jaSS pisze: Najprostszym sposobem:

Kod: Zaznacz cały

echo file_get_contents('/sciezka/do/twojego/pliku/config.php')]
[/quote]
Chyba się nie zrozumieliśmy. w ten sposób [b]echo file_get_contents('http://www.domena.com/config.php');[/b] chcesz odczytać mój plik ?

: 10 lipca 2007, 14:13
autor: miszmaniac
Jestem właścicielem swojego serwera + kilku w pracy, więc nie pomyślałem o tym, że ktoś może nie mieć roota :P
Po za tym, na jedno wychodzi. Chodziło o ideę umieszczenia pliku poza documentroot.

: 10 lipca 2007, 14:38
autor: jaSS
[quote="jang"]Chyba się nie zrozumieliśmy. w ten sposób echo file_get_contents('http://www.domena.com/config.php')]

Ewidentnie sie nie zrozumieliśmy, ja mówiłem o przypadku kiedy "strona" znajduje sie na współdzielonym serwerze bez chroot/jail/vserver dla każdej domeny.

ponton mówil o dostępie przez shell, nawet jeżeli zablokuje taki dostęp żeby inni userzy na serwerze nie mogli wyświetlić tego pliku to user www-data musi mieć do niego dostęp a każdy inny user może odpalić skrypt php który tam sięgnie.

Kiedyś (dawno temu zanim zacząłem robić po prostu vservery) bawiłem sie z opcjami 'open basedir'/'safe_mode' + ograniczenie dostępu tylko dla użytkownika www-data do katalogów.