| | |
| Stránka: 1 z 1
| [ Príspevkov: 26 ] | |
Autor | Správa |
---|
Registrovaný: 16.10.08 Prihlásený: 26.07.16 Príspevky: 82 Témy: 12 | Napísal uUsErR: 18.02.2009 22:13 | |
|
Ahojte, začínam programovať v php, a chcel by som stránky robiť pomocou include. Obsah v tele sa includuje podľa premennej page. Chcel som sa spýtať, či je tento skript bezpečný. Kód: <?php $page = $_GET["page"]; if ($page == "jedna") {include "jedna.php";} elseif ($page == "dva") {include "dva.php";} elseif ($page == "tri") {include "tri.php";} else {include "index.php";} ?> Ďakujem.
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 18.02.2009 22:14 | |
|
je to ok, ale namiesto ifov by som pouzil switch.
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 16.10.08 Prihlásený: 26.07.16 Príspevky: 82 Témy: 12 | Napísal autor témy uUsErR: 18.02.2009 22:17 | |
|
Diky, ale ešte som tam spravil chybu... Sám sa includuje, keď tam není to čo tam má byť, čiže
<?php
$page = $_GET["page"];
if ($page == "jedna") {include "jedna.php";}
elseif ($page == "dva") {include "dva.php";}
elseif ($page == "tri") {include "tri.php";}
else {include "index.php";}
?> Opravím na 404.php...
Naposledy upravil uUsErR dňa 18.02.2009 22:21, celkovo upravené 1
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
mno, ked nebude existovat $_GET["page"], tak ti to vyhodi chybu (ak nemas vypnute zobrazovanie chyb), takze aj to by som este osetril...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 16.10.08 Prihlásený: 26.07.16 Príspevky: 82 Témy: 12 | Napísal autor témy uUsErR: 18.02.2009 22:21 | |
|
Stačí keď overím či premenná page existuje ? Alebo ako to ošetrím?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
staci, ked skontrolujes, ci $_GET['page'] existuje...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 16.10.08 Prihlásený: 26.07.16 Príspevky: 82 Témy: 12 | Napísal autor témy uUsErR: 18.02.2009 22:32 | |
|
Diky.
Ešte keď ste tu, aký je rozdiel od include a include_once ?
//edituj si prispevky! (stenley)
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
vyskusaj si spustit skript
Kód: include("obsah.php"); include("obsah.php"); a potom Kód: include_once("obsah.php"); include_once("obsah.php");
obsah.php moze obsahovat obycajny text... po spusteni zistis, ze v prvom pripade sa vlozil obsah 2krat (presne tolkokrat, kolkokrat si uviedol include("obsah.php")), ale v druhom pripade len raz - z toho vychadza aj nazov include_once - includne ti subor len raz, ak sa ho pokusas vlozit viackrat...
http://sk.php.net/manual/en/function.include-once.php
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 16.10.08 Prihlásený: 26.07.16 Príspevky: 82 Témy: 12 | Napísal autor témy uUsErR: 18.02.2009 22:44 | |
|
Je dik, takže to zas prepíšem na include_once.
Kód: <? if (isset($page)) { $page = $_GET["page"]; if ($page == "jedna") {include_once "jedna.php";} elseif ($page == "dva") {include_once "dva.php";} elseif ($page == "tri") {include_once "tri.php";} else {include_once "404.php";} } ?> Hm?
//naposledy ta upozornujem na pouzivanie tlacitka edit (stenley)
Prepáč, Stenley.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
takto to nemozes spravit, lebo premenna $page pri prvom if este neexistuje, cize by ti to nikdy nezbehlo + vypisalo by ti to chybu...
Mohlo by to vypadat takto:
Kód: <?php if(!empty($_GET['page'])) { switch($_GET['page']) { case 'jedna': include_once("jedna.php"); break; case 'dva': include_once("dva.php"); break; case 'tri': include_once("tri.php"); break; default: include_once("404.php"); } } ?>
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 16.10.08 Prihlásený: 26.07.16 Príspevky: 82 Témy: 12 | Napísal autor témy uUsErR: 18.02.2009 23:07 | |
|
A to je naozaj posledné, keď chcem mať na začiatok inklúdované keď tam není stanovená premenná page napr uvod.php ?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
tak k hlavnemu if-u jednoducho pridas else vetvu:
Kód: <?php if(!empty($_GET['page'])) { switch($_GET['page']) { case 'jedna': include_once("jedna.php"); break; case 'dva': include_once("dva.php"); break; case 'tri': include_once("tri.php"); break; default: include_once("404.php"); } } else { include_once("uvod.php"); } ?>
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 16.10.08 Prihlásený: 26.07.16 Príspevky: 82 Témy: 12 | Napísal autor témy uUsErR: 19.02.2009 10:42 | |
|
Dik.
|
|
Registrovaný: 20.03.08 Prihlásený: 08.03.17 Príspevky: 596 Témy: 149 Bydlisko: Houston, Texas | Napísal Unlink: 19.02.2009 16:13 | |
|
sry za otázku pomimo ale aký je rozdiel medzi include a require ?
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
require ti urobí fatal error pokiaľ súbor nieje nájdený
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 Bydlisko: Bratislava | Napísal shaggy: 19.02.2009 20:57 | |
|
A ešte lepšie riešenie (keďže vidím, že includuješ stránky, ktorých názov sa zhoduje s GET):
Kód: <?php $page = $_GET["page"]; if(file_exists("$page.php")) {include("$page.php");} else include("default.php"); ?>
Toto bol prvý kód vďaka ktorému som sa zoznámil s php (ďakujem za neho mylanovi).
Je to jednoduché - kontroluje či existuje ten súbor, ak existuje, tak ho includuje, ak nie, tak includuje default.php (alebo si ho nazvi ako len chceš, je to na tebe).
+ nemusíš použiť swith ani if-ovanie tých stránok ak je v GET "tri", tak bude includovať tri.php atď.
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
shaggy, bez urazky, ale radsej nerad, hlavne nie v teme o bezpecnosti skriptu, lebo tvoj kod je deravy ako sito... clovek sa potom cuduje, preco vyrastaju phpckari, ktori o bezpecnosti nemaju ani sajnu...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 Bydlisko: Bratislava | Napísal shaggy: 19.02.2009 22:17 | |
|
aha, až teraz som si všimol, že sa pýtal na zabezpečenie skriptu
Sorry stenley, ja som si myslel, že sa len pýtal na "princíp" includovania, jasne že je potrebné ešte predtým ošetriť ten vstup, len som to nepokladal za dôležité.
Ale inak, nevidím dôvod prečo by to po ošetrení vstupných hodnôt nebolo bezpečné. Určite je to lepšie ako switch ktorý bude obsahovať napríklad 20 stránok.
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
samozrejme, ze tento princip je efektivnejsi ako pouzitie if/switch, ale narazal som na prevedenie tvojho kusku kodu... a hlavne, neuviedol si tam, ze treba este osetrit vstupy, preto aj ta moja reakcia... predpokladam, ze by to len skopcil a v domneni, ze je to ok, pouzil by kod na stranke bez akejkolvek upravy...
co sa tyka if/switch, casom by hadam zistil, ze sa pocet vetiev priamo umerne zvysuje poctom podstranok, a potom by urcite hladal ine vhodne riesenie a nasiel by tento kod napriklad aj tu na pcf, kedze sa to tu uz preberalo...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
mozem sa spytat v com je ten shaggyho kod zly a ako by to mohlo byt nebezpecne? nejaky priklad lebo nejak om z toho mimo
|
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
Uplne by stacilo ak by si mal na serveri adresar s "povolnejsimi" pravami, napriklad upload obrazkov.
Ak by nebol spravne osetreny upload, lahko by sa mohlo stat ze ti tam namiesto obrazku niekto uploadne php subor... cestu k nemu ti potom podstrci cez get a ty ho includnes... a spracujes.
A potom sa uz moze stat cokolvek, odcudzenie/strata dat... cokolvek.
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
Blackdevil píše: mozem sa spytat v com je ten shaggyho kod zly a ako by to mohlo byt nebezpecne? nejaky priklad lebo nejak om z toho mimo
predstav si prípad že by si zadal:
stránka.sk/page=../../../etc/passwd\0
(ak by nešlo tak)
stránka.sk/page=../../../etc/passwd%00
Linuxáci by to vedeli lepšie , sú tam hesla.
Dá sa povedať, že shaggybo script by bol bezpečnejší v tomto tvare:
Kód: <?php $page = $_GET["page"]; if(ereg("^[a-zA-Z0-9]+$",$page) AND file_exists("$page.php")) include("$page.php"); else include("default.php"); ?>
|
|
Registrovaný: 26.02.08 Prihlásený: 24.05.13 Príspevky: 372 Témy: 66 Bydlisko: Nové Zámky |
ale ak by bola stranka iba cisto informacna ziadna administracia ziaden upload nic vsetko by sa prepisovalo a doplnalo rucne v kode tak by ten kod bol ajtak nebezpecny alebo ne? ze cisto mam 1.php 2.php 3.php 4.php 5.php a podla GET includujem subory...cize utocnik by nemal moznost mi dostat na server nejaky kod ktory by potom mohol spustit cez prave tuto moznost...
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
veď práve som ti ukázal ako
útočník by si zistil hesla a prihlásil by sa, následne by si robil čokoľvek ... nahral svoj obsah napr.
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 20.02.2009 13:42 | |
|
Tominator píše: predstav si prípad že by si zadal: stránka.sk/page=../../../etc/passwd\0 (ak by nešlo tak) stránka.sk/page=../../../etc/passwd%00 Linuxáci by to vedeli lepšie , sú tam hesla.
nie su tam hesla
a s tym nulovym znakom by ti to pravdepodobne tiez nefungovalo. mozno na nejakej starej verzii apache
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
a čo tam je, lebo som sa k tomu nikdy nedostal
a pravdepodobne by to fungovalo aj na novších ide o interpretáciu PHP
|
|
| Stránka: 1 z 1
| [ Príspevkov: 26 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| [VYRIESENE] spustenie shell skriptu v PHP, ASP | 8 | 787 | 23.02.2009 11:44 Feko | | Zavolanie skriptu v JavaScript, VBScript, Ajax | 8 | 866 | 17.04.2008 14:06 Ded'leg | | Názov skriptu v Redakčné systémy | 2 | 3379 | 17.07.2007 19:49 pepek92 | | Testovanie rýchlosti skriptu v PHP, ASP | 0 | 429 | 04.09.2012 21:17 1daemon1 | | wmp chyba skriptu v Audio programy | 0 | 1120 | 23.09.2010 23:43 MiGi | | Perl - spustenie skriptu v Perl, Python, Ruby, CGI | 2 | 1370 | 02.08.2010 15:27 DARSON | | Limitované spustenie skriptu? v PHP, ASP | 1 | 334 | 18.05.2010 18:33 JanoF | | Použitie tohto js skriptu ? v JavaScript, VBScript, Ajax | 2 | 521 | 22.09.2009 21:53 chrono | | Čas vykonávania skriptu - funkcia v PHP, ASP | 3 | 408 | 18.07.2010 14:00 DARSON | | Zaznam chyb celeho skriptu v PHP, ASP | 2 | 840 | 30.10.2008 22:14 Hoomerr | | Napísanie skriptu v perl v Perl, Python, Ruby, CGI | 1 | 1309 | 24.10.2009 20:25 rooobertek | | Chybova hlaska skriptu csh v Operačné systémy Unix a Linux | 1 | 296 | 27.10.2014 9:43 expresado | | načítanie skriptu z js dokumentu v JavaScript, VBScript, Ajax | 2 | 698 | 29.02.2008 16:44 jablko05 | | Ochrana proti viacnásobnému spúšťaniu skriptu v JavaScript, VBScript, Ajax | 2 | 507 | 15.09.2010 20:53 optimista | | chyba skriptu aplikace Internet Explorer v Operačné systémy Microsoft | 5 | 1104 | 02.05.2010 13:27 rAse | | Zacyklen ciklus, časované spúštanie skriptu v PHP, ASP | 2 | 243 | 27.01.2014 13:35 BX |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|