Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 9. diel - Zabezpečenia šablón

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Petr
Člen
Avatar
Petr:12.8.2018 15:29

...

Odpovedať
12.8.2018 15:29
Kdyby zakladatel nebyl arogantni k****, mohl byt ITNetwork fakt ceska oborova socialni sit.
Avatar
Petr
Člen
Avatar
Petr:12.8.2018 16:42

Řešení leží zde: http://htmlpurifier.org/

Odpovedať
12.8.2018 16:42
Kdyby zakladatel nebyl arogantni k****, mohl byt ITNetwork fakt ceska oborova socialni sit.
Avatar
Otvorený Zdroj
Tvůrce
Avatar
Otvorený Zdroj:19.5.2019 23:32
// ($x = null) hodnota atributu $x  prednastavena ako chýbajúca alebo neexistuje

private function osetri($x = null)
        {
// ak hodnota atributu neexistuje vráti null- hodnota neexistuje nevrati nic
                if (!isset($x))
                        return null;

// ak hodnota atribútu je reťazec převede speciální znaky v textu na HTML entity, ENT_QUOTES - Převede uvozovky i apostrofy.
elseif (is_string($x))
                        return htmlspecialchars($x, ENT_QUOTES);


// ak je atribut pole
elseif (is_array($x))
                {           //Cyklus prebehne polom a osetri kazdu hodnotu
                        foreach($x as $k => $v)
                        {
                                $x[$k] = $this->osetri($v);
                        }
// zaroven vrati hodnotu
                        return $x;
                }
//ak neprebehne ziadna moznost vrati hodnotu $x
                else
                        return $x;
        }

Vie mi to niekto lepsie okomentovať? myslim celu metodu private function osetri($x = null)

Odpovedať
19.5.2019 23:32
Ak existuje voľná energia, tak autorské právo sú dve smiešne slová..
Avatar
Odpovedá na Otvorený Zdroj
administrator222:16.4.2020 0:48

funkce je velice jednoduchá, má za úkol pouze ošetřit předanou proměnou $x typu string pomocí htmlspecialchars().
Což znamená převod speciálních znaků na html entity.
Pro podrobnější info:
https://www.php.net/…ialchars.php
https://www.itnetwork.cz/…y-php-manual

Celá funkce obsahuje tři podmínky:

  1. test zda je proměnná typu null vrátí to co jsi jí dal.
  2. test zda je proměnná typu string ("text") v tom případě provede ošetření pomocí htmlspecialchars()
  3. test zda je proměnná typu array(), pomocí foreach() prochází pole a rekurzivně volá sama sebe, jako hodnotu $x předává hodnotu získanou z pole a nahradí ji tím co se jí vrátí. Ošetří i více rozměrné pole právě díky rekurzi.
  4. pokud není splněna žádná z předchozích podmínek funkce vrátí to co dostala
 
Odpovedať
16.4.2020 0:48
Avatar
Jaroslav Kuthan:6.1.2022 10:15

"Náš systém je nyní zabezpečený proti útoku XSS..."

To ale přeci není, pokud celý obsah článku je neošetřený.

 
Odpovedať
+1
6.1.2022 10:15
Avatar
Jan Štěch
Člen
Avatar
Jan Štěch:5.8.2022 19:21

Tak mě napadá, že ošetřování všech proměnných pro pohled a jejich následné zduplikování kvůli pár možným výjimkám, kde některou z nich ošetřenou nechceme může být dost náročné na paměť i výkon. Nebylo by lepší ponechat si pouze ošetřené pole a v případě nějaké té výjimky, jako třeba obsahu článku použít prostě <?= htmlspecialchars_decode($obsah, ENT_QUOTES) ?>?

 
Odpovedať
5.8.2022 19:21
Avatar
Jan Štěch
Člen
Avatar
Odpovedá na Jaroslav Kuthan
Jan Štěch:5.8.2022 19:22

Ono se asi předpokládá, že ty články budou moci přidávat jenom administrátoři, nebo že budou procházet nějakým systémem schvalování, podobně jako tady na ITnetwork. 🙂
Ale jinak v podstatě ano, stačí jedna ovlivnitelná a neošetřená proměnná a XSS může nastat.

 
Odpovedať
5.8.2022 19:22
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 7 správy z 27.