Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 26 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.10.08
Prihlásený: 26.07.16
Príspevky: 82
Témy: 12
Príspevok NapísalOffline : 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.


Offline

Čestný člen
Čestný člen
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 17.10.06
Prihlásený: 08.01.11
Príspevky: 1752
Témy: 17
Príspevok NapísalOffline : 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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.10.08
Prihlásený: 26.07.16
Príspevky: 82
Témy: 12
Príspevok Napísal autor témyOffline : 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

Offline

Správca fóra
Správca fóra
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 18.02.2009 22:20

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.10.08
Prihlásený: 26.07.16
Príspevky: 82
Témy: 12
Príspevok Napísal autor témyOffline : 18.02.2009 22:21

Stačí keď overím či premenná page existuje ? Alebo ako to ošetrím?


Offline

Správca fóra
Správca fóra
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 18.02.2009 22:31

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.10.08
Prihlásený: 26.07.16
Príspevky: 82
Témy: 12
Príspevok Napísal autor témyOffline : 18.02.2009 22:32

Diky.

Ešte keď ste tu, aký je rozdiel od include a include_once ?

//edituj si prispevky! (stenley)


Offline

Správca fóra
Správca fóra
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 18.02.2009 22:41

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.10.08
Prihlásený: 26.07.16
Príspevky: 82
Témy: 12
Príspevok Napísal autor témyOffline : 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.


Offline

Správca fóra
Správca fóra
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 18.02.2009 22:55

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.10.08
Prihlásený: 26.07.16
Príspevky: 82
Témy: 12
Príspevok Napísal autor témyOffline : 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 ?


Offline

Správca fóra
Správca fóra
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 18.02.2009 23:11

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.10.08
Prihlásený: 26.07.16
Príspevky: 82
Témy: 12
Príspevok Napísal autor témyOffline : 19.02.2009 10:42

Dik.


Offline

Užívateľ
Užívateľ
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149
Bydlisko: Houston, Texas
Príspevok NapísalOffline : 19.02.2009 16:13

sry za otázku pomimo ale aký je rozdiel medzi include a require ?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 19.02.2009 16:21

require ti urobí fatal error pokiaľ súbor nieje nájdený


Offline

Čestný člen
Čestný člen
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 21.02.06
Prihlásený: 08.12.14
Príspevky: 5404
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 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 :lol: (ď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.
Offline

Správca fóra
Správca fóra
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 19.02.2009 21:03

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
Offline

Čestný člen
Čestný člen
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 21.02.06
Prihlásený: 08.12.14
Príspevky: 5404
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 19.02.2009 22:17

aha, až teraz som si všimol, že sa pýtal na zabezpečenie skriptu :D
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.
Offline

Správca fóra
Správca fóra
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 19.02.2009 22:32

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 26.02.08
Prihlásený: 24.05.13
Príspevky: 372
Témy: 66
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 19.02.2009 23:05

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 :)


Offline

Skúsený užívateľ
Skúsený užívateľ
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 29.10.07
Prihlásený: 27.10.23
Príspevky: 1395
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 20.02.2009 9:39

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 20.02.2009 11:38

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 :D, 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");
 ?>
 


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 26.02.08
Prihlásený: 24.05.13
Príspevky: 372
Témy: 66
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 20.02.2009 12:15

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...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 20.02.2009 12:58

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.


Offline

Čestný člen
Čestný člen
[VYRIESENE] Bezpečnosť skriptu

Registrovaný: 17.10.06
Prihlásený: 08.01.11
Príspevky: 1752
Témy: 17
Príspevok NapísalOffline : 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 :D, 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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 20.02.2009 13:44

:D a čo tam je, lebo som sa k tomu nikdy nedostal :D
a pravdepodobne by to fungovalo aj na novších ide o interpretáciu PHP :)


Odpovedať na tému [ Príspevkov: 26 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. [VYRIESENE] spustenie shell skriptu

v PHP, ASP

8

787

23.02.2009 11:44

Feko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zavolanie skriptu

v JavaScript, VBScript, Ajax

8

866

17.04.2008 14:06

Ded'leg Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Názov skriptu

v Redakčné systémy

2

3379

17.07.2007 19:49

pepek92 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Testovanie rýchlosti skriptu

v PHP, ASP

0

429

04.09.2012 21:17

1daemon1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. wmp chyba skriptu

v Audio programy

0

1120

23.09.2010 23:43

MiGi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Perl - spustenie skriptu

v Perl, Python, Ruby, CGI

2

1370

02.08.2010 15:27

DARSON Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Limitované spustenie skriptu?

v PHP, ASP

1

334

18.05.2010 18:33

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Použitie tohto js skriptu ?

v JavaScript, VBScript, Ajax

2

521

22.09.2009 21:53

chrono Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Čas vykonávania skriptu - funkcia

v PHP, ASP

3

408

18.07.2010 14:00

DARSON Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zaznam chyb celeho skriptu

v PHP, ASP

2

840

30.10.2008 22:14

Hoomerr Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Napísanie skriptu v perl

v Perl, Python, Ruby, CGI

1

1309

24.10.2009 20:25

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chybova hlaska skriptu csh

v Operačné systémy Unix a Linux

1

296

27.10.2014 9:43

expresado Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. načítanie skriptu z js dokumentu

v JavaScript, VBScript, Ajax

2

698

29.02.2008 16:44

jablko05 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ochrana proti viacnásobnému spúšťaniu skriptu

v JavaScript, VBScript, Ajax

2

507

15.09.2010 20:53

optimista Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba skriptu aplikace Internet Explorer

v Operačné systémy Microsoft

5

1104

02.05.2010 13:27

rAse Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zacyklen ciklus, časované spúštanie skriptu

v PHP, ASP

2

243

27.01.2014 13:35

BX Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra