Amennyire néztem, maga az alap select elem, kis stílussal, de én se sok időt töltöttem vele. A kódban addEventListener, querySelectorAll, forEach, stb. bátran van használva.
Ja, azokat én is láttam. Programozni nem tud annyira, mint effektusokat létrehozni, pl. nagyon szépen keveri a DOM függvényeket az innerHTML-lel (szerintem egyszerűbb és gyorsabb lett volna az egészet az utóbbival létrehozni).
Pont arra jó a jQuery, hogy helyettünk (többé-kevésbé) megoldja a böngészőkompatibilitást. Persze inkább a régebbi verziók, ott több fantázia kell tőlünk (ami talán még előny is).
DOM függvényeket az innerHTML-lel (szerintem egyszerűbb és gyorsabb lett volna az egészet az utóbbival létrehozni)
Csak erős haladóknak. Én kezdőknek nagyon nem javaslom az innerHTML-t / szöveges HTML írást. Ott követik el a legtöbb hibát, a megfelelő regexp-et sem tudják sokszor megírni. DOM fv-el ez elkerülhető könnyen. De szerveroldali HTML/XML-feldolgozás is ugyanez.
Ja, hát a világon a legnagyobb marhaság saját html vagy xml parsert írni, amikor már létezik ilyen és 100x gyorsabb és jobb, mint ami a mi tollunkból jön... Egyedüli kivétel, ha vér profik vagyunk, és hatalmas mennyiségű xml-t szeretnénk feldolgozni, és tudjuk a tutit... :-)
Meg biztonságosabb is. Az innerHTML az a kategória, mint a mysql_real_escape_stringgel összerakott query: elméletileg lehet biztonságosan csinálni, gyakorlatilag ha nagy mennyiségben használód, előbb-utóbb biztos becsúszik egy sebezhetőség.
Pl. egy rossz indulatú felhasználó egy script taget állított be a felhasználói nevének, vagy valami más rosszaság. A DOM függvények ettől védenek, ugyanis a document.createTextNode mindig text node-ot hoz létre. Ha valaki ügyeskedik, és az innerHTML-be rakott tartalom nincsen előbb megfelelően validálva és escapelve, az csúnya dolgokat eredményezhet. A DOM függvények ettől a validációtól megkímélnek, ugyanis a böngésző elvégzi a megfelelő escapelést helyetted.
inf3rno, ha én elkövettem azt a "marhaságot", hogy írtam saját BBCodert és Markdown-átalakítót, akkor marha vagyok, vagy vér profi? :)
Szerintem egyik sem, egyszerűen különböztek az igényeim a fellelhető cuccoktól. Persze ez nem DOM/XML.
A bbcode és az md nincs beépítve a php-ba semmilyen formában, velük ellentétben az xml-nél ott van a libxml, szóval egyáltalán nem egy kategória a kettő. Ettől függetlenül én inkább meglévő parsert használnék vagy alakítanék át, ha ilyen igényem lenne, feltéve ha nincs benne preg_replace eval sebezhetőség meg hasonló ;-)
én inkább meglévő parsert használnék vagy alakítanék át, ha ilyen igényem lenne, feltéve ha nincs benne preg_replace eval sebezhetőség meg hasonló ;-)
Amit be lehetett volna állítani az én igényeim szerint, az nagyobb volt, mint a framework :), ami meg kicsi, az nem azt, nem úgy, és nem ritkán eval-lal. Nem sokat keresgéltem, megírtam én, amit könnyen át is írok, mindkettő egy-egy kicsi osztály, és 1-2 extrát tud. Így csak azt csinálja, amit akarok, nagyon rövid futásidővel.
Persze, hogy XML-re nem írnék... :)
Szerk.: egyébként mi a gondod a preg_replace eval-al? Ha jól használod (pl. osztályon belüli fv-re), szerintem nem gond. Ha tévednék, kérek szépen "felhomályosítást"! (Így fejből: mintha a MD-ban lenne...)
Szerk2.: Szóval én a szerver oldalról (PHP) beszélek, a kliens másik történet.
Ezt pont azért vettem külön fv-be, hogy beállítástól függően tiltani lehessen az idegen URL-ről származó képeket.
Én túl bonyolultnak tartom szűrni a {...}-ket, úgy, hogy mint karaktert lehessen használni (akkor egy nagy szótár kéne, hogy mik nem szerepelhetnek közte, és a tiltó szűrés sem "zsánerem", inkább a megengedőt szeretem, ami abban nincs, az tiltott).
Ezért tiltom a template-ben, így ott csak "valódi" tagek érvényesülhetnek tag-ként (és mivel nem HTML-t várunk, mindjárt < lesz belőle, stb.). Szerintem így nem gond, és nem tudom, hogy a preg_replace_callback mennyivel-mitől lenne jobb ebben az esetben.
Szerk.: bár lehet, hogy a példádat nem egészen értem. ({$...)
Nem érted a lényeget, felhasználótól származó tartalmat escapelés nélkül hívsz meg php kódként. Gyakorlatilag bármilyen php parancsot meghívhatnak innentől az oldaladon, mondjuk egy általuk feltöltött php fájl includolását, vagy még egy eval-t, amibe már tényleg tetszőleges hosszú kódot írhatnak, stb...
felhasználótól származó tartalmat escapelés nélkül hívsz meg php kódként
Na ez az, ami nálam nincs, bár a kódrészletből hiányzik. A felhasználótól jövő adaton elsők közt van (akár BBCode, akár MD) a < cseréje. Ezért írtam a template-re is a "{" tiltást, ezért nem használom (meg a template-ben is nekem jobban átlátható a <?php..., de nem ez a lényeg).
Így a különbséget még mindig nem értem (a preg_replace_callback sem escape-el helyetted), illetve ha korábban már levédtem az inputot, akkor miért ne használhatnám?
Lehet én vagyok értetlen, de még mindig nem tiszta.
Ez nagyon messze van az escapeléstől, simán lehet küldeni olyan string-et img után, amiben van ", ami kiüti az img_check utáni idézőjelet, és máris injektálható bele php kód. Az eval használata minden esetben életveszélyes, mert csak egyszer felejtesz el szűrni valamire, és máris kész a baj...
A preg_replace callback a $1-et paraméterként adja át, így nem is kell escapelni azt.
Bár elvileg nem lehet eddigre a $1-ben "<" (és sehol máshol sem a szövegben), az mégis lehet, hogy megkerülhető. Az idézőjel "tette tisztába", köszönöm.
Ja mondjuk ennek is megvannak a korlátai, ha az akadálymentesség, vagy a masszív adatbevitel a szempont, de pl egy ilyen keresőre egy mondat az teljesen okés...
Egyik haver írta, hogy nem, én hittem neki, ezek szerint hiba volt :-) Végülis ha belegondol az ember tényleg akadálymentesebb, mint egy össze-vissza label-ezett űrlap, aminek ki tudja hol van a másik fele. A srác még azt is felhozta ellenérvnek, hogy az összetett mondatokat nem mindenki érti meg :D
Elég jó dolgai vannak a
Wow: ez mekkora ötlet:
Azt díjazom benne, hogy nem
Cserébe viszont IE8-ban is
Amúgy király a cucc.
Ez elkerülte a figyelmemet,
Amennyire néztem, maga az
Ja, azokat én is láttam.
jQuery - IE8
Ja, hát a világon a
Meg biztonságosabb is. Az
Milyen sebezhetőségek
User input
document.createTextNode
mindig text node-ot hoz létre. Ha valaki ügyeskedik, és azinnerHTML
-be rakott tartalom nincsen előbb megfelelően validálva és escapelve, az csúnya dolgokat eredményezhet. A DOM függvények ettől a validációtól megkímélnek, ugyanis a böngésző elvégzi a megfelelő escapelést helyetted.Azért egy kérdés...
Szerintem egyik sem, egyszerűen különböztek az igényeim a fellelhető cuccoktól. Persze ez nem DOM/XML.
A bbcode és az md nincs
Ezért nem találtam...
Persze, hogy XML-re nem írnék... :)
Szerk.: egyébként mi a gondod a preg_replace eval-al? Ha jól használod (pl. osztályon belüli fv-re), szerintem nem gond. Ha tévednék, kérek szépen "felhomályosítást"! (Így fejből: mintha a MD-ban lenne...)
Szerk2.: Szóval én a szerver oldalról (PHP) beszélek, a kliens másik történet.
egyébként mi a gondod a
Igen, ha a template-eződben
{...}
.Nekem nincs, épp ezért (részben).
De elgondolkodtam így is a módosításon, mert van ilyenem:
Én túl bonyolultnak tartom szűrni a
{...}
-ket, úgy, hogy mint karaktert lehessen használni (akkor egy nagy szótár kéne, hogy mik nem szerepelhetnek közte, és a tiltó szűrés sem "zsánerem", inkább a megengedőt szeretem, ami abban nincs, az tiltott).Ezért tiltom a template-ben, így ott csak "valódi" tagek érvényesülhetnek tag-ként (és mivel nem HTML-t várunk, mindjárt
<
lesz belőle, stb.). Szerintem így nem gond, és nem tudom, hogy apreg_replace_callback
mennyivel-mitől lenne jobb ebben az esetben.Szerk.: bár lehet, hogy a példádat nem egészen értem. ({$...)
http://php.net/manual/en/func
Nem érted a lényeget, felhasználótól származó tartalmat escapelés nélkül hívsz meg php kódként. Gyakorlatilag bármilyen php parancsot meghívhatnak innentől az oldaladon, mondjuk egy általuk feltöltött php fájl includolását, vagy még egy eval-t, amibe már tényleg tetszőleges hosszú kódot írhatnak, stb...
Természetesen manuált néztem
<
cseréje. Ezért írtam a template-re is a "{" tiltást, ezért nem használom (meg a template-ben is nekem jobban átlátható a<?php...
, de nem ez a lényeg).Így a különbséget még mindig nem értem (a
preg_replace_callback
sem escape-el helyetted), illetve ha korábban már levédtem az inputot, akkor miért ne használhatnám?Lehet én vagyok értetlen, de még mindig nem tiszta.
$text[$n] =
A preg_replace callback a $1-et paraméterként adja át, így nem is kell escapelni azt.
Köszönöm, átírom
Ez ebben a formában nem igaz,
Itt azt nem értem, hogy
<?php
. De mivel 5.5-től szevasz neki, mindenképp javítanom kell.Eddig is köszönöm.
double quoted strings >
Köszönöm szépen!
Inkább csináld preg replace
Ja mondjuk ennek is megvannak
Nem értem, az általad
Egyik haver írta, hogy nem,
Hasznos