Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Skrypt nie dziala serwerze
Blazko
post 27.10.2006, 19:52:05
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 15.10.2006

Ostrzeżenie: (0%)
-----


Witam

Mam pewien problem z działaniem strony. Jest w niej skrypt:
Kod
<?
$urls=$id.".txt";
if(file_exists("$urls"))
{
$file = fopen($urls, "r");

echo file_get_contents($urls);

fclose($file);
}
else{
echo file_get_contents("glowna.txt");
}
?>


Skrypcik ten jest do wyswietlania podstron, np. wpisanie www.mojastrona.php?id=podstrona spowoduje wyswietlenia strony z tekstem z pliku podstrona.txt. Generalnie wszystko działa piknie, ale tylko tylko na moim kompie (mam zainstalowany krasnal serv). Gdy wstawiam strone z tym skryptem na serwer własciwy, to skrypt przestaje działac - tzn. zawsze jest załączany plik glowna.txt. Wersja php na serwerze to 4.4.3

Co jest nie tak? Dodam, że na na innym serwerze, tj. webd.pl. skrypt ten działa.

Ten post edytował Blazko 27.10.2006, 20:06:04
Go to the top of the page
+Quote Post
kornel-php
post 27.10.2006, 20:36:40
Post #2





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


Umieszczasz ten skrypt na jakimś darmowym serwerze?

Np. na cba.pl, czy na 60free.ovh.org nie można wykonać żadnych operaccji na plikach, a tak btw. masz błąd w kodzie przy file_existst(), nazwę zmiennej podajesz bez znaków "", '', tylko w postaci ($zmienna)...


--------------------
:)
Go to the top of the page
+Quote Post
Blazko
post 27.10.2006, 20:41:11
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 15.10.2006

Ostrzeżenie: (0%)
-----


Jest to serwer http://dualserv.net/ , wiec raczej chyba dobry.
Poprawiłem ten błąd ze cudzysłowami, ale niewiele pomogło.
Go to the top of the page
+Quote Post
Cysiaczek
post 27.10.2006, 20:47:53
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Dyrektywa register_globals w php.ini Serwery mają na OFF, a Ty masz na On i dlatego nie działa na serwerze.
Poczytaj o $_POST, $_GET etc.
  1. <?php
  2. $urls=$_GET['id'].".txt"; // Tu jest zmiana
  3. if(file_exists("$urls"))
  4. {
  5. $file = fopen($urls, "r");
  6.  
  7.  
  8. fclose($file);
  9. }
  10. else{
  11. echo file_get_contents("glowna.txt");
  12. }
  13. ?>


Na koniec - skrypt jest dziwnie napisany - użycie file_get_contents() do wyświetlania zawartości...questionmark.gif?
aha. Niepotrzebnie otwierasz przez fopen() - wystarczy sama funkcja pobierająca dane z pliku.
aha2. Jest makabrycznie niebezpieczny - brak filtracji danych - zhackowanie tego, to kwestia "chciejstwa" każdego usera.

Pozdrawiam

Ten post edytował Cysiaczek 27.10.2006, 20:49:41


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Blazko
post 27.10.2006, 21:03:20
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 15.10.2006

Ostrzeżenie: (0%)
-----


Działa ! Dzieki smile.gif

Czemu file_get_contents jest złym rozwiązaniem? I jak zabezpieczyć to przed shakowaniem?
Go to the top of the page
+Quote Post
Cysiaczek
post 27.10.2006, 21:09:23
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Spróbuj wstawi kod php do takiego pliku i go wykonać. Jest to po prostu makabrycznie nieelastyczne. Co do bezpieczeństwa - jesteś w stanie podać w urlu np coś takiego ?id=../../../etc/shadow i wyświetlić zawartość pliku z hasłami smile.gif

Temat: Bezpieczenstwo skryptow php

Ten post edytował Cysiaczek 27.10.2006, 21:11:20


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Blazko
post 27.10.2006, 21:11:35
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 15.10.2006

Ostrzeżenie: (0%)
-----


Czyli include będzie lepsiejsze? snitch.gif
Go to the top of the page
+Quote Post
Cysiaczek
post 27.10.2006, 21:12:43
Post #8





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Tak. include() jest dużo lepsze, a nawet jest wskazane jego użycie smile.gif


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
erix
post 28.10.2006, 08:17:22
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Chyba ktoś zapomniał basename" title="Zobacz w manualu php" target="_manual, nie?

include" title="Zobacz w manualu php" target="_manual/require" title="Zobacz w manualu php" target="_manual użyj wtedy, jeśli chcesz, aby zawarty w pliku kod był przetwarzany przez parser. Jeśli nie, to wtedy możesz spokojnie użyć file_get_contents" title="Zobacz w manualu php" target="_manual, ale ze wspomnianą przeze mnie wyżej funkcją.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 11:22