Opasni/nepoželjeni karakteri unutar HTML-a

Situacija je kad želimo renderirati neki tekst koji je userov unos…i koji nam stiže iz baze.

…i sad, koje sve situacije treba imati na umu, da bi se tekst uvijek ispravno renderirao unutar HTML-a.

Znači ako korisnik koristi špičaste zagrade, koje se koriste kao oznaka za tagove unutar HTML-a …takvi znakovi će vrlo vjerovatno nestati uslijed browserov-og parsiranja HTML-a.

Koji još znakovi / kombinacije nisu dobrodošli ?

Dali postoji neki uobičajeno korišten parser koji će sve te kombinacije pretvarati iz stanja koje nam treba kad taj tekst želimo prikazati u TEXTAREA polju → u stanje kad ga prikazujemo unutar DIV-a. (i obratno)

Ako još uzmemo u obzir da nekada ne želimo ništa konvertirati, nego prikazati HTML točno onakav kakav je user unio, onda se otvara sigurnosna rupa gdje korisnik može unesti npr. JS tagove, koji će aktivirati neželjeni JS code.
Dali postoji negdje detaljan popis, ili zna netko na koje sve načine korisnik može unesti neželjeni JS code za taj slučaj kada mu dopuštamo da unosi HTML oznake …i dali može još što opasnoga uglaviti osim JS codea?

Fala.

Mislim da imas vamo sve odgovore https://html5sec.org/

Nisi napisao o kojem jeziku pricas.
Vecina environmenta ima svoje nacine za escapeanje outputa (bilo to kroz metode frameworka, bilo u view componenti. Ako pricas o PHPu, pogledaj OWASP filtere npr. Uglavnom, validacija inputa (provjerit ima li smisla ono sto korisnik unosi, sto ovisi o konkretnom slucaju/business caseu), i escapeanje outputa koji se pljuca vani u HTML. Tipicno ne zelis filtrirat/escapeat input; to se radi na izlazu, ovisno o tome gdje ide user input (drugacije hendlas ono sto ide prema bazi od onog sto ide vani u HTML).

Volio bi temu fokusirati na pregled “kritičnih” situacija, a ne na specifični jezik…ili ugrađene metode nekog frameworka.

Istina, pitao sam jel postoji kakav parser, tu sam mislio na PHP ili JS tehnologiju. Ali puno više me zanima jedan dobar rezime da se nabroji što je opasno tj. koje situacije mogu izazvati problem. Te situacije bi još dodatno mogli kategorizirati pod nenamjerno korištenje znakova koje nije moguće renderirati bez parsera, i pod namjerno uvaljivanje “code-a” koji može stvarati probleme. S time da ovdje ne mislim na code koji bi bio uvaljen kao SQL injection napad…nego code koji bi bio problematičan prilikom renderiranja na client strani. (Zaboravih kako se takav napad zove)