Autor | Zpráva | ||
---|---|---|---|
vaclav Profil * |
#1 · Zasláno: 28. 9. 2006, 23:23:16
byl mi zablokován učet z důvodu rozesílání spamu, který odcházel z našeho webu. Jediný skript je ve stránce index.php a to
<? if (!$_GET['url']) $_GET['url']='stranka.php'; ?> a <? require($_GET['url']); ?> je toto neuvážená expanze promennych jak mi bylo řečeno od admina? a jak mám pochopit spolupráci s těmi, u kterých jsem na placeném hostingu? psal jsem radu a bylo mi odpovězeno - budeme s kolegy jeste resit, jestli jeji odblokovani vubec povolime |
||
tiso Profil |
#2 · Zasláno: 28. 9. 2006, 23:32:38
Tento skript s neošetrenou premennou dovoľuje pri vhodne benevolentnej konfigurácii servera každému vykonať jeho skript...
|
||
vaclav Profil * |
#3 · Zasláno: 28. 9. 2006, 23:42:16
a můžete mi poradit jak by vypadal s ošetřetřenou proměnnou?? diky
|
||
tiso Profil |
#4 · Zasláno: 29. 9. 2006, 00:00:09
-zakážeš vkladanie externej url
-porovnávaš zadanú url so zoznamom povolených url (pole, databáza) Nehovoriac o tom že chýba kontrola na existenciu vkladaného súboru |
||
mila Profil |
#5 · Zasláno: 29. 9. 2006, 00:23:28
Když o tom zapřemýšlíš, tak do url může dát uživatel cokoli, a ten soubor se tak bude includovat. A pokud přídá nějaká ta lomítka, tak se dostane všude na serveru, kam skript...
|
||
vaclav Profil * |
#6 · Zasláno: 30. 9. 2006, 03:25:10
dobře, a jak tedy na stránkování?
Stačí pro začátek stránkování na linuxsoftu.cz?? výsledek je tady příklad je to bezpečné stránkování? jde mi o jednoduchý univerzální kod, kterým bych ovládal strukturu webu nikdo se mi tam už nenaboural, diky |
||
tiso Profil |
#7 · Zasláno: 30. 9. 2006, 10:11:49
To je celkom dobré riešenie... Nikto Ti z vonku nepodsunie súbor (vďaka ./ na začiatku) ale umožňuje útočníkovi chodiť po adresárovej štruktúre (zadaním page=../nejaka-stranka). Pokiaľ povolíš php súbory, tak Ti spustí skript ktorého bude vedieť adresu. Stačí tam mať skript na upload a už si robí čo chce...
|
||
Joker Profil |
#8 · Zasláno: 30. 9. 2006, 11:10:46
vaclav
Neprůstřelná varianta by byla mít někde (třeba v databázi) uložený seznam alias-soubor a podle aliasu vkládat příslušný soubor. Jinak ale myslím, že ta aktuální varianta by už byla dostačující. |
||
Hooonza Profil * |
#9 · Zasláno: 30. 9. 2006, 11:42:10
Stačí k ošetření vstupu htmlentities (..., ENT_QUOTES)?
|
||
krteczek Profil |
#10 · Zasláno: 30. 9. 2006, 12:13:18
nejlepší je (pokud se jedná o scripty s php) řešení kdy se názvy proměnnách uloží do pole a k nim se přiřadí cesta...
jen dodám, že toto je výtah jen části mé funkce ukaz_clanek(); která vrací pole $s ($s['nazev'], $s['clanek'], ...), a každý volaný soubor obsahuje funkci stranka() která toto pole vrací.. takže použití vypadá takto:
předesílám že je to výrazně zkráceno krteczek |
||
novice vaclav Profil * |
#11 · Zasláno: 30. 9. 2006, 15:59:54
tiso - To je celkom dobré riešenie...
pomůžete mi využít tohoto příkladu a i s ...zakážeš vkladanie externej url -porovnávaš zadanú url so zoznamom povolených url (pole, databáza) zadaná cesta mi připadá taky jako ideální řešení, ale v příkladu se nějak nevyznám |
||
tiso Profil |
#12 · Zasláno: 30. 9. 2006, 16:40:06
novice vaclav
1. zakážeš vkladanie externej url Ako som písal: vďaka ./ na začiatku vkladanej adresy (if (is_file("./".$mujclanek.".htm")):) to už máš obmedzené 2. porovnávaš zadanú url so zoznamom povolených url (pole, databáza) Vytvoríš si asociativne pole so zoznamom stránok: $stranky=array("uvod" => "uvod.php", "kontakt" => "kontakt.php", "webdesign" => "webdesign.php") a potom kontroluješ $_GET premennú: if(isset($stranky[$_GET["clanek"]])){include ($stranky[$_GET["clanek"]]);} |
||
krteczek Profil |
#13 · Zasláno: 30. 9. 2006, 16:46:38
novice vaclav: Prostě je seznam volaných skriptů, ten uložíš do pole tak, že klíč bude to co posíláš v $_GET['url']
mějme názvy stránek v parametru (příklad):
tyto názvy uložíš do pole (array()), a každému přidáš adresu na které se nachází ( $stranky = array( "uvod" => "./scripty/uvod.inc.php", "o-nas" => "./nekde/onas.inc.php", "kniha-navstev" => "./gb/kniha.inc.php" ); [/pre] takže máš pole $stranky a v něm jako klíče to co očekáváš ze $_GET['url'] teď v tom poli hledáš klíč shodný se $_GET['url']
toto je bezpečný, ovšem trošku pracnější přístup k souborům :-) Aby mi nemohl nikdo vykonat skripty voláním konkrétního souboru jsou téměř ve všech souborech funkce (příklad):
navíc se snažím všechny proměnné před použitím iniciovat:
takže ni na hostingu se zaplými register_globals by nemělo docházet k problémům krteczek |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0