Autor Zpráva
ald
Profil *
Pouzivam na strankach k volani jednotlivych polozek menu klasicky pristup: index.php?page=neco.

Cast kodu index.php:
include page.php

Pry muze nekdo vlozit do stranek jakykoli cizi kod, dostat se na server a delat si tam co chce. index.php?page=http://neco.txt

Nevite nekdo jak to zabezpecit? Diky
nightfish
Profil
switch ($_GET['page']) {
case "neco": include "neco.php"; break;
case "cenik": include "cenik.php"; break;
case "kontakt": include "kontakt.php"; break;
...
...
}
Pavel Prochazka.zde.cz
Profil *
ja to delam asi takto:

function ukazclanek ()
{
if(isset($_REQUEST["clanek"])){
$sBuffer=explode(";",$_REQUEST["clanek"]);
$_REQUEST["clanek"]=$sBuffer[0];
$sBuffer=explode("=",$sBuffer[1]);
if(isset($sBuffer[1])){
$_REQUEST[$sBuffer[0]]=$sBuffer[1];
}
}
unset ($sBuffer);
if ((string)$_REQUEST["clanek"]<>'') $mujclanek=$_REQUEST["clanek"]; else $mujclanek="uvod";
if (is_file("./".$mujclanek.".htm")):
$nazevclanku=$mujclanek.".htm";
require $nazevclanku;
elseif (is_file("./".$mujclanek.".php")):
if ($mujclanek<>"scripty/guestbook"){//toto zrusi nastaveni pozice v guestbooku kdy kliknu na jinou stranku...
unset($_SESSION["od"],$_SESSION["do"], $_SESSION["odpoved"],$_SESSION["odpoved_nick"], $_SESSION["odpoved_datum"]);
}
$nazevclanku=$mujclanek.".php";
if (strstr($mujclanek,"download_pocitadlo") == false) { //inicializace parametru pri vlozeni pocitadla. Toto provest vzdy krome odskoku na administraci pocitadel.
include "scripty/download_pocitadlo.php";
}
require $nazevclanku;
else:
notfound($mujclanek);
endif;
}

function notfound ($nazevclanku){
$sTitulek ="NOT FOUND --> 404 ERROR - www.prochazka.zde.cz";
include "zahlavi.php";
?>
<TABLE class=index cellSpacing=0 cellPadding=15 border=0>
<TBODY>
<TR>
<TD class=indextitle>
<DIV class=bot_left>NOT FOUND - 404 ERROR - www.prochazka.zde.cz</div>
</TD>
</TR>
<TR>
<TD class=indextext>
<?php echo "<P>&nbsp;&nbsp;&nbsp;Litujeme, ale požadovaný dokument: <b>".$_SERVER["SERVER_NAME"]."/index.php?clanek=".$nazevclanku."</b> nebyl na serveru nalezen.</p>";?>
<P>&nbsp;&nbsp;&nbsp;Pokud problemy přetrvávají, prosim kontaktujte autora <a href="index.php?clanek=kontakt">WEBu</a></p>
<?php ZakonceniStranky();
}
Pepik
Profil *
Stačí předtim ověřit, zda soubor existuje u tebe na webu.... Pokud ne, zobrazí se chybové hlášení.
ald
Profil *
Dik vsem, puvodne jsem myslel, ze bude existovat jednodussu reseni, ale uz to je.
Vypis casti index.php:

$pages = array("aktuality/gb" => "Aktuality",
"aktuality/help" => "Aktuality - Nápovìda",
"aktuality/admin" => "Aktuality - Zmìna/Výmaz zprávy",
"popis obce" => "Popis obce",
...............

$PAGE = $_GET["PAGE"];

<title>bla bla
<?php
echo " - ";
echo $pages[$PAGE];
?>
</title>


<?php
while( list($key, $value) = each ($pages)) {
if ($key == $PAGE) {
include ($PAGE.'.php');
break;
}
}
?>
Alphard
Profil
while( list($key, $value) = each ($pages)) {
nebyl by lepší foreach :-)

anebo ještě tépe array_key_exists http://cz.php.net/manual/cs/function.array-key-exists.php
T2001
Profil *
tato metoda hacknutí by měla fungovat jen pokud includuješ přes $_GET více je o tom
tady

:-)
Railbot
Profil
Pokud includuješ stránku tím nejběžnějším způsobem (základní použití funkce include), tak ti touto cestou nikdo "hacknout" (ono je to spíš vložení cízho obsahu) stránky nemůže. Není jak.
Trixer
Profil
Hoj, ja to delam tak, ze neprirazuju promeny ale ze delam novou promenou a potom overuju, jestli ta promena existuje ( isset() ). Takze asi takto web.php/?neco. V kodu mam...

if(isset($neco)){
.......
}elseif(isset($neco2)){
}else { a sem kod kdyz si nekdo zada neco jinyho nebo nezada nic...}


Pouzivam toto, ale nevim jestli je to taky bezpecny, nejak sem se o to nezajimal. Dik za komentare ;)
ald
Profil *
array_key_exists je urcite lepsi.

Pokud includuješ stránku tím nejběžnějším způsobem (základní použití funkce include), tak ti touto cestou nikdo "hacknout" (ono je to spíš vložení cízho obsahu) stránky nemůže. Není jak.

pokud je na serveru vypnute registrer globals musim pouzit $_GET.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0