widoczne has
widoczne hasło w pliku php
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.
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.
-
- Posty: 79
- Rejestracja: 09 maja 2007, 00:11
- Lokalizacja: Gdynia
Najlepiej zrób sobie plik w /etc/... np w /etc/php_includes/baza.php
o treści
<?php
$uztykownik_bazy=login
$haslo=...
?>
Zmień
(jeśli nie zadziała tak to root:root)
A potem
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
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
o treści
<?php
$uztykownik_bazy=login
$haslo=...
?>
Zmień
Kod: Zaznacz cały
chown www-data:www-data nazwa_katalogu
A potem
Kod: Zaznacz cały
chmod 700 nazwa_katalogu
Potem w skryptach php zamiast tych linijek dopisuj
Kod: Zaznacz cały
include("/etc/php/hasla.php");
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
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.
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.
Ja tak z czystej ciekawości :ponton pisze:hasło jest trzymane w pliku (np. config.php), do którego każdy ma dostęp (np. z shella).
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;
...
?>
Na serwerze masz dostęp do katalogu /etc ?miszmaniac pisze:Najlepiej zrób sobie plik w /etc/... np w /etc/php_includes/baza.php
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
-
- Posty: 79
- Rejestracja: 09 maja 2007, 00:11
- Lokalizacja: Gdynia
Najprostszym sposobem: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)
Kod: Zaznacz cały
echo file_get_contents('/sciezka/do/twojego/pliku/config.php');
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.miszmaniac pisze:Jasne, przynajmniej dla roota, a niby jak apache odczytałby konfigurację?jang pisze:Na serwerze masz dostęp do katalogu /etc ?
W /etc/ tylko niektóre pliki nie mają praw do odczytu dla ogółu, np. shadow
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 ?
-
- Posty: 79
- Rejestracja: 09 maja 2007, 00:11
- Lokalizacja: Gdynia
[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.
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.