html kód szűrése
Üdv!
Adatbázisban tárolok html kódokat (hozzászólások, cikkek stb.) és semmiféle tiltást nem akarok rajta alkalmazni (minden tag engedélyezve van) csak egy bizonyos dolgot szeretnék szűrni, mégpedig, hogy ne lehessen a javascriptes alert() függvényt használni.
Tehát ha van egy ilyen kódom:Akkor csak az alert(llalala); rész ne fusson le (ne legyen a kódban sem benne) a többi ugyan úgy maradjon meg.
Ez hogyan kivitelezhető? Valamifajta regexp-re gondoltam, de nem találtam használhatót.
■ Adatbázisban tárolok html kódokat (hozzászólások, cikkek stb.) és semmiféle tiltást nem akarok rajta alkalmazni (minden tag engedélyezve van) csak egy bizonyos dolgot szeretnék szűrni, mégpedig, hogy ne lehessen a javascriptes alert() függvényt használni.
Tehát ha van egy ilyen kódom:
Lalalalala
<script>
var llalala="sajt";
alert(llalala);
document.write(llalala);
</script>
Ez hogyan kivitelezhető? Valamifajta regexp-re gondoltam, de nem találtam használhatót.
:) viszonylag nevhezenvar
viszonylag nevhezen
Nem is kell eval
eval
a fentihez. Elegendő csupánFelülírás így?
(A célkitűzést én sem értem. Egyáltalán: js-t nem kiszűrni?!)
Igen
Köszi az infót
Nem hiába tettem a php-s
Szóval, van egy ilyen:
A kérdés az, hogy mi kerüljön a remove_alerts() függvénybe?
Ennek az az értelme, hogy bárki bármilyen kódot használhat és az általa írt kód hiánytalanul maradjon meg AB-ban, de a kiíratásnál ezek mégsem szerepeljenek benne (mert ugye mindenkit idegesít a felugró ablak, főleg ha tele van vele az oldal trolloknak köszönhetően).
A függvény felülírása jól jönne, ha máshol nem lenne szükség az alert-re.
Nem lehetséges
alert
. A másik dolog, hogy igencsak bonyolult lenne egy ilyet megírni, mivel teljes nyelvi elemzés kell hozzá. Ugyanis rengeteg dolgot lehet azalert
-be írni, amitől még szintaktikailag és szemantikailag is helyes marad, de az elemzést igencsak megnehezíti.Igazából egy AST-t kellene
Semmilyen "külső" módon nem tudod megakadályozni, hogy egy Turing-teljes nyelvben írt program legyártson egy adott stringet, márpedig javascriptben ha le tudsz gyártani egy stringet, akkor meg is tudod hívni a megfelelő függvényt. Nagyjából két lehetőséged van: vagy eltávolítod a nyelvből az alert függvényt (ami nem triviális, mert pl. létrehozhat egy iframet, és máris van egy intakt window objektuma), vagy megakadályozod a string->függvény konverziót (reménytelenül nehéz, és egy csomó alapvető dolgot ki kell hozzá irtani, pl. setTimeout). Szóval egyszerűbb el se kezdeni.
BBcode?
Gyanítom, előbb-utóbb rájössz (miután trollokat emlegettél), hogy nem csak az alert problémás, sőt...
Pl. IP címek levadászásához, egyéb csúnyaságokhoz fel lehet használni iframe-et, img-t is stb.
Szóval olyan helyre ahová nem csak egy szűk körnek van joga írni, én nem engednék html-t.
Írta
Ha ez vmi js-tuningoló oldal akar lenni, akkor érdemesebb egész más oldalról közelíteni (pl. így), de inkább az kéne, hogy elárulja a kérdező, hogy milyen funkciót akar megvalósítani.
Van egy olyan oldalam, ahol a
Tehát pl. tudjanak bármit beágyazni, de felugró ablakokat ne tudjanak beleírni a kódba (js alert pl).
Közben előjött egy másik olyan dolog is, amit meg kellene oldani, mégpedig a css. Ha valaki használni szeretne css-t is és beleírja a kódba a következő módon és az osztály (class) neve megegyezik egy már, az oldalon használtéval az a (nevezzük úgy) keret oldal kinézetét teheti tönkre. Ezt is jó lenne olyasmi módon kiszűrni, hogy a felhasználó által megadott css osztályok neveit ismerje fel és írja át másra.
Mint azt már korábban
alert
et afail
üzenettel:Vannak CSS parser-ek, azokat kellene használni, és módosítani vele a kódot.
Figyelmeztetés