- Félreértések az FSR 4 és a PlayStation 5 Pro körül
- Acer notebook topic
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen egeret válasszak?
- AMD vs. INTEL vs. NVIDIA
- Milyen billentyűzetet vegyek?
- Milyen notebookot vegyek?
- Vélemény: nem úgy tűnik, de Lip-Bu Tan most menti meg az Intelt
- Androidos tablet topic
- NTFS, exFAT, FAT32 – Melyiket válaszd és miért?
Új hozzászólás Aktív témák
-
ddekany
veterán
válasz
nemmind1_85 #8 üzenetére
Na, szerintem erről érdemes lenne írni a cikkben, annál is inkább mert enélkül a példák is hibásak. Amiről még érdemes lenne írni, hogy default_modifiers=array("escape") esetén hogy lehet escaping nélkül kiírni dolgokat (mikor egy változó szándékosan HTML-t tartalmaz), ill. el lehet-e elkerülni dupla escape-olást (mikor a template szerzője nem tudta, hogy nálad automatikusan escape-olás van, ezért ${...|escape}-t használt)... ezek a tipikus escape-s template szívások Smarty-től függetlenül.
-
ddekany
veterán
válasz
nemmind1_85 #5 üzenetére
Nekem az a határozott véleményem, hogy ez hiba, mivel egy template engine-ről van szó, aminek feladata nagy részben az, hogy változók értékeit szúrja be valamibe. Tehát azt elvárni, hogy manuálisan oldja meg az ilyen-olyan encoding-ot (pl. HTML kódolást) valaki, minden egyes beszúrásnál, ostobaság, és felesleges biztonsági kockázat (mert sokan sokszor ki fogják felejteni). Az, hogy ez mégis így van rengeteg template nyelvben egyszerűen annak köszönhető, hogy nem tudnak elrugaszkodni a készítők az általánosabb célú nyelvektől. DE, lehet, hogy Smarty-nak van erre megoldása, csak akkor kimaradt a cikkből.
Ami a többféle formátumot illeti, közölni kell a template engine-el hogy melyik template kimenete milyen formátumú, és kész. Pl. az alapértelmezés HTML, ha meg nem HTML-t generálunk, akkor meg kell adni template elején a formátumot... ilyesmik.
Az SQL injection egy jó példa arra, hogy hova vezet, ha nem próbálja megoldani a nyelv vagy a programozói könyvtár automatikusan az ilyen alacsony szintű problémákat. Soha sehol senkinek nem szabadott volna string összefűzéssel előállítani SQL parancsokat (OK, kivéve néhány extrém esetben), csak sablonokkal, pl ilyesmi: sql("SELECT id FROM something WHERE cat = ?", catVar). Itt is a sablon dolga, hogy biztosítsa az érték SQL szintaxisú "idézését", már ha egyáltalán valaha létrejön az SQL utasítás szövegként... lényeg hogy nem neked kell arra figyelni, hogy olyasmiket írjál, mint sql("SELECT id FROM something WHERE cat = " + sqlEsc(catVar)), ahol az sqlEsc-et nem ér kifelejteni.
-
ddekany
veterán
Csak gyorsan átfutottam, szóval lehet hogy csak nekem maradt ki valami... de mintha a beszúrt értékek nem lennének HTML-kódolva ("<"-ből "<", stb). Ha pedig így van, az elég súlyos hiba, és biztonsági rés. Amúgy template engine-knél ez tipikus tervezési hiba, hogy nem az az alapértelmezés, hogy HTML-kódolnak (HTML encode, HTML escape... ki hogy hívja). Gondolom a Smarty sem kivétel.
Új hozzászólás Aktív témák
- HP ProBook 430 G4 Pentium 4415U (bios jelszavas)
- BANKMENTES részletfizetés Noblechairs HERO RL valódi bőr Gamer Szék
- LG 27UL500-W - 27" IPS - 3840x2160 4K - 60Hz 5ms - HDR10 - AMD FreeSync - 300 Nits - sRGB 99%
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest