Adrian K.

Adrian K. Data Security
Administrator,
System Administrator
(ABI, ASI)

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Dotychczas na php4 wszystko śmigało. Teraz mam hosting na serwerze z php5 i pojawił się problem ze zmiennymi w adresie:

Strona działą tak że w adresie http://.....index.php?p=cos_tam

parametr p wskazywał co ma zostać zainkludowane (jaka strona).

oto kod ktory działał na php4 a nie działa w php5:

<? if(!isset($p)) {
$p="start";
}
if(file_exists("$p.htm")) {
include "$p.htm";
} else {
include "404.php";
}
?>


czy ktoś mógł by mi podpowiedzieć jak to przepisać żeby działo w php5

z góry bardzo dziękuję
pozdrawiam
Adrian
Tobiasz M.

Tobiasz M. Project Manager,
Programista,
Redaktor Naczelny

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

<?php
$p = $_GET['go'];

if(!empty($p)) {

if(is_file("$p.php")) include "$p.php";

}

else include "404.php";
?>

powinno działać :)
Proponuje zmienić rozszerzenie stron z html na php :)
Stronkę ładujesz za pomocą index.php?go="coś tam" :)Tobiasz Magadzia edytował(a) ten post dnia 28.10.08 o godzinie 15:17
Bartłomiej Szczudło

Bartłomiej Szczudło Unix & Windows
Administrator

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Adrian Kastura:
<? if(!isset($p)) {
$p="start";
}
if(file_exists("$p.htm")) {
include "$p.htm";
} else {
include "404.php";
}
?>
register_globals jest wyłączone, w php 4 też się dało wyłączyć.
Bez zmieniania linków w stronach odsyłających będzie chyba lepiej zostawic to "p" :)
<?php
if (!empty($_GET['p']))
{
$p = $_GET['p'];
if(is_file("$p.htm"))
{
include "$p.htm";
}
else
{
include "404.php";
}
}
?>

Tylko że to się aż prosi o odsyłacze w stylu
index.php?p=/etc/passwd
a to jest bardzo źle.

Lepiej zrobić tablicę asocjacyjną, na przykład
$pages = array(
'info' => 'static/info.html',
'contact' => 'static/contact.html',
'shop' => 'shop/index.php',
);

i odwoływać się do niej, np.
if(!empty($pages[$p]))
{
include ($pages[$p]);
}
else
{
include ('404.php');
}
Bartłomiej S. edytował(a) ten post dnia 28.10.08 o godzinie 16:05
Adrian K.

Adrian K. Data Security
Administrator,
System Administrator
(ABI, ASI)

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Mam jeszcze jedno pytanie

poprzednio było tak że jeżeli nie było żadnego parametru (adres...index.php) to includowało mi stronę start.htm

Z góry dzięki

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

kto Ci podejrzy etc/passwd?

wystarczy, że będziesz wycinał ("..") z includowanego adresu i nie ma ch*ja na mariole.
Adrian K.

Adrian K. Data Security
Administrator,
System Administrator
(ABI, ASI)

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

a możecie mi Panowie podać rozwiązanie żeby:

gdy adres nie zawiera parametru (jedynie samo index.php) to includuje start.htm

No i żeby skrypt zrobił się bardziej bezpieczny.

Z góry dziękuję i pozdrawiam
Adrian

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

wystarczy, że będziesz wycinał ("..") z includowanego adresu i nie ma
ch*ja na mariole.
Ja znajdę ch*ja, Ty znajdź mi mariolę

/etc/passwd <- co da wycięcie ".."

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Adrian Kastura:
a możecie mi Panowie podać rozwiązanie żeby:

gdy adres nie zawiera parametru (jedynie samo index.php) to includuje start.htm

No i żeby skrypt zrobił się bardziej bezpieczny.

Z góry dziękuję i pozdrawiam
Adrian


switch
(
(isset($_GET['p'])) ? $_GET['p'] : 'index'
)
{
case 'strona_1':
include 'strona_1.htm';
break;

case 'strona_2':
include 'strona_2.htm';
break;

case 'index':
include 'start.htm';
break;

default:
include '404.htm';
}

Stanisław Głogowski edytował(a) ten post dnia 28.10.08 o godzinie 16:56
Adrian K.

Adrian K. Data Security
Administrator,
System Administrator
(ABI, ASI)

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

działa :D z tym że za każdym razem gdy dodawana jest nowa strona np. aaa.htm to trzeba to dopisać do skryptu jako przypadek, np:

case 'aaa':
include 'aaa.htm';
break;

mój stary skrypt nie potrzebował modyfikacji (dopisania "przypadku") lecz jedynie odnośnika w menu lub adresu z odpowiednim parametrem. Da się to tak rozwiązać żeby nie trzeba był za każdym razem dopisywać przypadków. No i żeby było bezpieczniej niż kiedyś.

Czy do bezpieczeństwa nie wystarczy sprawdzenie czy plik istnieje i dopisanie do wartości parametru ".htm" ?

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Adrian Kastura:
Czy do bezpieczeństwa nie wystarczy sprawdzenie czy plik istnieje i dopisanie do wartości parametru ".htm" ?


$p = str_replace(
array(
'/',
'\\'
),
'',
(isset($_GET['p'])) ? $_GET['p'] : 'start'
);

if (file_exists($p . '.htm'))
{
include $p . '.htm';
}
else
{
include '404.htm';
}
Stanisław Głogowski edytował(a) ten post dnia 28.10.08 o godzinie 17:20
Adrian K.

Adrian K. Data Security
Administrator,
System Administrator
(ABI, ASI)

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Bardzo dziękuję wszystkim za pomoc. Wszystko działa jak należy i mam nadzieję że jest bezpieczne.

pozdrawiam
Adrian

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Mozna pojsc jeszcze dalej i poza istnieniem pliku sprawdzac jego typ MIME, z uzyciem rozszerzenia fileinfo, i dopuszczac jedynie "text/html" lub "application/x-php".

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Łukasz S.:
Mozna pojsc jeszcze dalej i poza istnieniem pliku sprawdzac jego typ MIME, z uzyciem rozszerzenia fileinfo, i dopuszczac jedynie "text/html" lub "application/x-php".

Z racji tego że doklejamy .htm i blokujemy przejście do innego katalogu, nie sądzę by było to potrzebne :)

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Stanisław Głogowski:
Łukasz S.:
Mozna pojsc jeszcze dalej i poza istnieniem pliku sprawdzac jego typ MIME, z uzyciem rozszerzenia fileinfo, i dopuszczac jedynie "text/html" lub "application/x-php".

Z racji tego że doklejamy .htm i blokujemy przejście do innego katalogu, nie sądzę by było to potrzebne :)

Gdzieś widziałem numer z doklejaniem .htm do ścieżki zakończonej spacji, efekt niefajny. Ręczne przypisanie adres => plik jest najbardziej bezpieczne.

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Michal Modorski:
wystarczy, że będziesz wycinał ("..") z includowanego adresu i nie ma
ch*ja na mariole.
Ja znajdę ch*ja, Ty znajdź mi mariolę

/etc/passwd <- co da wycięcie ".."

myślisz, że wpisując /etc/passwd zainkludujesz to? ;))
musisz się odwołać do katalogów wyżej, jak już to w stylu
?include=../../../../etc/passwd

marna z Ciebie hakerzyna ;]

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Kuba Świegot:
Michal Modorski:
wystarczy, że będziesz wycinał ("..") z includowanego adresu i nie ma
ch*ja na mariole.
Ja znajdę ch*ja, Ty znajdź mi mariolę

/etc/passwd <- co da wycięcie ".."

myślisz, że wpisując /etc/passwd zainkludujesz to? ;))
musisz się odwołać do katalogów wyżej, jak już to w stylu
?include=../../../../etc/passwd

marna z Ciebie hakerzyna ;]
zamiast gadac lepiej sprawdz, bo chyba nie wiesz co oznacza '/' na poczatku sciezki.

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Michal Modorski:
Kuba Świegot:
Michal Modorski:
wystarczy, że będziesz wycinał ("..") z includowanego adresu i nie ma
ch*ja na mariole.
Ja znajdę ch*ja, Ty znajdź mi mariolę

/etc/passwd <- co da wycięcie ".."

myślisz, że wpisując /etc/passwd zainkludujesz to? ;))
musisz się odwołać do katalogów wyżej, jak już to w stylu
?include=../../../../etc/passwd

marna z Ciebie hakerzyna ;]
zamiast gadac lepiej sprawdz, bo chyba nie wiesz co oznacza '/' na poczatku sciezki.

no nie wiem, a co oznacza?

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

powrót do źródła?
Marcin K.

Marcin K. Programowanie jest
moim powołaniem,
Alleluja

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Z reguły każdy linux na ustawione chmod na dany katalog etc i tym bardziej na plik z haslami. Jako zwykly uzytkownik lub grupa apache nie masz mozliwosci read. Jeśli tak jest to osoby opiekujące się serwerem są cieńkimi bolkami ;P

konto usunięte

Temat: Kto pomoże - "moje" strony po przejściu na php5 ie chcą...

Z reguły każdy linux na ustawione chmod na dany katalog etc i tym bardziej na plik z haslami. Jako zwykly uzytkownik lub grupa apache nie masz mozliwosci read. Jeśli tak jest to osoby opiekujące się serwerem są cieńkimi bolkami ;P

/etc/passwd jest zawsze chmod 0644 - moze go odczytac dowolny uzytkownik. Ale tam jest jedynie lista kont z ich uid/gid. Zeby sie wlamac, trzeba wykorzystac atak slownikowy na jakas usluge typu ssh, a serwer webowy niekoniecznie musi (nie powinien przynajmniej) taka udostepniac na zewnetrznym interfejsie.

/etc/shadow, zawierajacy hash hasla, ma chmod 0640 z i z reguly uid:gid = "root:shadow" lub "root:root". Do tego nawet "Mariola" sie nie dobierze, chyba ze dziala z konta roota - ale wtedy albo admin, albo uzyty software jest do bani.

Problem mozna zniwelowac startujac proces(y) serwera WWW w chroot.
Np. tak -> Chrooting Apache



Wyślij zaproszenie do