lharmatowski
12.05.2006, 18:05:17
Witajcie!
Sprawa wygląda może banalnie ale jestem ciekawy Waszego zdania.
Powiedzmy że drzewo katalogów na serwerze wygląda tak:
/config
/lib
Jak zablokować dostęp do plików w config i lib, tak żeby użytkownik wpisując w przeglądarke ścieżke do pliku nie mial do niego dostępu.
Pozdrawiam!
TomASS
12.05.2006, 18:18:19
Przypuśćmy, że masz taki plik:
<?
$jakas_wazna_zmiennna_konfiguracyjna = "wartosc";
?>
Zapisz go jako plik 'config.php' i wpisz w przeglądarkę:
http://serwer/config.phpNic nie zobaczysz.
Wg. mnie to wystarczające zabezpieczenie.
lharmatowski
12.05.2006, 18:25:00
Zgadza się!
Zapomniałem jednak dodać że pytanie dotyczy pliku o rozszeżeniu .ini.
Zmiana praw dostępu do pliku na poziomie konta też nie działa efektywnie.
A może lepiej zapisywać pliki konfiguracyjne w XML? Ale czy to dobry sposób? Czy można zablokować dostęp do pliku .xml i czy w php 4 używanie DOM jest wskazane?
devnul
12.05.2006, 18:32:35
uzyj pliku .htacces, i zablokuj nim wszelkie odwołania do folderu, dzięki temu będziesz miał dostęp do pliku z poziomu serwera ale nie z zewnątrz
lharmatowski
12.05.2006, 18:47:26
Chciałbym uniknąć ręcznego przerabiana pliku .htacces, system nad którym pracuje ma nie wymagać od użytkownika zbyt wielkiej wiedzy na temat konfiguracji serwera. Instalacja na serwerze ma ograniczać się do przegrania plików na serwer i uruchowienia skryptu instalacyjnego ewentualnie zmiany praw dostepu do plikow na serwerze. Jeżeli znacie jakieś sprawdzone sposoby na zapisywanie plików konfiguracyjnych to napiszcie. Zaznaczam że chodzi mi głownie o kompatybilność z PHP4 w związku z czym pojawiają się pewne ograniczenia związane z obsługą XML.
Master Miko
12.05.2006, 18:52:05
No to robisz automatyczny skrypt który np. tworząc foldery lib i config odrazu przy instalacji tworzy plik .htaccess i wrzuca go do obu folderów... proste?
devnul
12.05.2006, 18:52:16
eeee a co ma .htacces do przerabiania plików - robisz raz i potem tylko kopiujesz plik na serwer :|
Kod
<Limit GET>
Order allow,deny
Allow 127.0.0.1
Deny from all
</Limit>
<Limit POST>
Order allow,deny
Allow 127.0.0.1
Deny from all
</Limit>
tak powinien wyglądać plik .htacces - zapisz go w katalogu który chcesz zabezpieczyć i po kłopocie
Master Miko
12.05.2006, 18:58:05
To by wyglądało tak (mój pomysł + post devnull)
Pisane z palca!!
<?php
function dodajHta($sciezka) {
$plikhtac = ".htaccess";
$plikhtac = $sciezka.$plikhtac;
$fp = fopen($plikhtac, "w+"); if (flock($fp, LOCK_EX
)) { // blokada pliku
$normalString = "<Limit GET>\nOrder allow,deny\nAllow 127.0.0.1\nDeny from all\n</Limit>\n<Limit POST>\nOrder allow,deny\nAllow 127.0.0.1\nDeny from all\n</Limit>\n";
flock($fp, LOCK_UN
); // odblokowanie } else {
echo "Błąd! Spróbuj ponownie"; }
}
dodajHta("lib/");
dodajHta("config/");
?>
lharmatowski
12.05.2006, 18:58:45
Rozumiem. Wielkie dzięki za pomoc. Chociaż pytanie o inne sposoby zapisu i edycji plików konfiguracyjnych w PHP4 jest nadal aktualne.

Chodzi mi głównie o to czy polecacie pliki .ini, .php, czy moze .xml, a może jeszcze jakiś inny sposób zapisu plików?
devnul
12.05.2006, 19:00:52
najlepszy jest php i to już TomASS wytłumaczył pozostałe wymagają obróbki danych przy odczycie co jakby nie patrzec obicąża skrypt dodatkowymi zadaniami.
@Master Miko: nie rozumiem po co chesz do tego robić dodatkowe fukcje w php. Bezsensu, przy tworzeniu projektu wrzuca się plik .htacces do odpowiedniego folderu i potem wystarczy skopiowac na serwer. A tak trzeba kombinować i dodawać scierzki wszyskich katalogów do listy w pliku php. Jest to niepotrzebne!
Master Miko
12.05.2006, 19:01:59
imho php jest najbezpieczniejszy bo jest parsowany przez serwer... xml widać tak samo ini (no chyba że zrobi się zaporę htaccess)
Co do funkcjonalności najfajniejsze jest ini bo bardzo łatwo się pisze, a xml też ma swoje zalety bo wszystko tam masz uporządkowane wg pewnego schematu.
no i TomASS ma racje...
devnul
12.05.2006, 19:05:43
Cytat
xml też ma swoje zalety bo wszystko tam masz uporządkowane wg pewnego schematu
w php od tego żęby uporządkowac dane masz tablice i tak samo można łatwo i przejżyście zbudować plik konfiguracyjny
lharmatowski
12.05.2006, 19:08:30
Jeszcze raz wielkie dzięki.
Całkiem fajne to forum

Czy najprostszą formą pliku konfiguracyjnego w .php może być plik podlinkowany do powiedzmy pliku index.php i zawierający zmienne np. z danymi połączenia z bazą danych?
Czy jest to bezpieczny sposób?
Pozdrawiam.
Master Miko
12.05.2006, 19:09:27
mały plik konfiguracyjny tak... uważam, że php jest najlepszym rozwiązaniem (najbezpieczniejsze, najszybsze)... ale używanie xmla byłoby co najmniej fajne.
----edit----
Tak. Skrypt jest prasowany przez server przecież

A jeśli chcesz mieć super zapezpieczenia robisz coś takiego:
index.php
<?php
include ("config.php")
?>
config.php
<?php
header('HTTP/1.0 404 not found'); } else {
$dane1 = "dane";
$dane2 = "dane";
}
?>
Wtedy hacker nawet jak wejdzie na plik to zobaczy że nie istnieje...
lharmatowski
12.05.2006, 19:12:07
Jeszcze raz zaznaczam że chodzi o PHP4 gdzie jednak używanie XML jest średnio wygodne w porównaniu do PHP5.
devnul
12.05.2006, 19:12:21
jak najbardziej bezpieczny, dane możesz trzymać w tablicach, zmiennych lub nawet definiowac jako stałe, wybór należy do ciebie

//edit:
Cytat
mały plik konfiguracyjny tak... uważam, że php jest najlepszym rozwiązaniem (najbezpieczniejsze, najszybsze)... ale używanie xmla byłoby co najmniej fajne.
kurcze, człowieku, rozwiazania programistyczne nie mają być fajne tylko funkcjonalne, łatwe w implementacji i możliwie niezawodne
Master Miko
12.05.2006, 19:16:25
Cytat
@Master Miko: nie rozumiem po co chesz do tego robić dodatkowe fukcje w php. Bezsensu, przy tworzeniu projektu wrzuca się plik .htacces do odpowiedniego folderu i potem wystarczy skopiowac na serwer. A tak trzeba kombinować i dodawać scierzki wszyskich katalogów do listy w pliku php. Jest to niepotrzebne!
omg... a czytasz przynajmniej jego posty, czy już monitor wypalił Ci oczy totalnie?
Jeśli tworzy skrypt dynamicznie (np. 1 plik instalacjyny) który tworzy fodlery i pliki konfiguracyjne no to bezsensu manualnie wrzucać pliki
Ale jeśłi chodzi Ci o kopiowanie całego skryptu (cały szkielet folderów + htaccess) to zwracam honor

devnull mogę Ci tylko powiedzieć...
Cytat
...strzeż się amatorów
devnul
12.05.2006, 19:21:11
Cytat
Instalacja na serwerze ma ograniczać się do przegrania plików na serwer i uruchowienia skryptu instalacyjnego ewentualnie zmiany praw dostepu do plikow na serwerze.
oj to chyba nie mi monitor oczy wypalił, kolega wyraźnie napisał o co chodzi

wniosek: zarówno kolega lharmatowski jak i ja mam na myśli skopiowanie całego skryptu z lokala na serwer
Master Miko
12.05.2006, 19:22:06
No dobrze.. przegranie plików nie musi oznaczać brak pliku instalacyjnego
devnul
12.05.2006, 19:25:18
ale łatwiej jest pominąć to w pliku instalacyjnym bo jest to zbędne i nie słuzy w sumei niczemu czego nie można rozwiązać łatwiej
a jak juz tak chcesz się bawić
Cytat
devnull mogę Ci tylko powiedzieć...
QUOTE
Cytat
...strzeż się amatorów
to ja tez powiem ci tylko:
Cytat
pozdrawiam
lharmatowski
12.05.2006, 19:25:49
Spokojnie!
Najlepszym rozwiązaniem jest dynamiczne tworzenie struktury katalogów to znaczy takie jest moje zdanie. Jednak jeżeli nie byłoby takiej możliwości to dobrym rozwiązaniem będzie również przegrywanie struktury katalogów.
Tutaj chodzi o pomoc w wybrze najlepszego rozwiązania z pośród różnych możliwości.
devnul
12.05.2006, 19:30:11
dynamiczne tworrzenie struktury plików wymaga tworzenia plików instalacyjncyh, co jest dobre przy dużych i popularnych skryptach nie przy małych serwisach tworzonych do jednorazowego użytku. Beezsensowna dodatkowa praca nad plikiem instalacyjnym, której można uniknąć ręcznie wrzucając pliki na serwer.
Master Miko
12.05.2006, 19:31:17
Popatrz sobie na systemy:
phpbb lub php nuke
jak to rozwiązali? Kopiowanie wszystkiego co wlezie

Jak robią to profesjonaliści to czemu nie my

To jest chyba najprostrze i niestety muszę się zgodzić z devnullem który zaprzecza przydatności dynamicznego tworzenia plików... bo po co tworzyć coś jeśli wiemy że to i tak będzie stworzone - nie lepiej dać gotowe

?
a w tych systemach instalka służy tylko do tworzenia bazy danych i stworzeniu paru pliczków takich jak config.php
devnul
12.05.2006, 19:35:42
zgadza się ale są to duże systemy, które instalują różne osoby, nie tylko porgramiści, ale jeżeli system jest obsługiwany przez twórce a instalacja odbywa się jednorazowo to nie ma potrzeby tworzenia plików instalacyjnych (no chyba że wymaga tego koncepcja projektu, np wygenerowanie jakichś danych, kluczy do szyfrów itp), bo jest to nikomu nie potrzebna praca.
siemakuba
12.05.2006, 19:40:55
ja jeszcze na temat configu. Jezeli koniecznie chcesz miec go plikiach *.ini z takiego czy innego powodu to zakladam ze parsujesz je zapomoca
parse_ini_file" title="Zobacz w manualu php" target="_manual. I teraz, ten plik wcale sie nie music nazywac config.ini, moze sie rownie dobrze nazywac config.ini.php Dołóż do tego jeszcze odpowidni początek tego pliku i bedziesz mogl go parsowac jako ini i jednoczesnie nie bedzie widoczny przez przegladarke zalozmy.
config.ini.php
Kod
;<?php die() ?>
[config]
v1 = v3
vt = itd.
osobiscie uznalbym rozwiazaniem zabezpieczenia z uzyciem .htaccess'a które zaproponował
@devnul za najpewniejsze, ale to kwestia wyboru
pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.