Autor Zpráva
iiic
Profil
Ahoj

Před nějakou už docela delší dobou jsou četl, že html5 nějak řeší problém obsahu tvořeného uživateli, když necháte uživatele tvořit/upravovat nějakou větší část html, tak tam vždycky něco rozbije a (přinejlepším) tím zkazí validitu stránky.

Měl existovat nějaký element, nebo atribut, kterým se libovolný element označí a obsah nešikovně tvořený uživatelem se dá dovnitř. Nemůžu teď ale nic najít… tak přemýšlím jestli je to něco co ze specifikace vypadlo, nebo jen špatně hledám.

Nevíte o tom prosím něco?
anonymní
Profil *
iiic:
a (přinejlepším) tím zkazí validitu stránky.
...na které nezáleží.

když necháte uživatele tvořit/upravovat nějakou větší část html, tak tam vždycky něco rozbije
nech ho editovat jen tu část, na které nemůže nic rozbít. Resp. zabezpeč si to editování tak, aby nic rozbít nemohl.

Měl existovat nějaký element, nebo atribut, kterým se libovolný element označí a obsah nešikovně tvořený uživatelem se dá dovnitř.
nedovedu si představit, jak by měl fungovat a co by měl dělat. Ignorovat vložené HTML? Na to přeci nepotřebuješ speciální HTML atribut. Intepretovat jen některé HTML? Které? Jak by to poznal?
breeta
Profil
jestli myslíš inline úpravu HTML5 contenteditable
Chamurappi
Profil
Reaguji na iiice:
Odpovědnost za správnost kódu má vždy to, co ho ukládá (případně to, co generuje výsledné HTML). Přesouvat ji na stranu prohlížeče by bylo praštěné a nebezpečné.
Pokud vím, tak nikdy nic takového neexistovalo. Pochybuju, že by takový návrh vůbec prošel. Navíc by takový element nikdy neměl 100% podporu, což by z něj dělalo ještě větší hrozbu.

Měl existovat nějaký element, nebo atribut, kterým se libovolný element označí a obsah nešikovně tvořený uživatelem se dá dovnitř.
Co když by uživatel takový hypotetický element nešikovně ukončil?

Částečně léčivé účinky (jen) na neuzavřené elementy má tabulka. V kódu umístěném do <table><tr><td> může izolovaně být víc zvěrstev a chyb, než mimo tabulku. Ale i tabulka jde rozbít třeba neuzavřeným komentářem či <script>em.
iiic
Profil
Škoda no, taky jsem na nic nepřišel… nevím jestli jsem nečetl kdysi o sandbox atributu ifram u. To ovšem není ideální řešení. Asi nic zatím ideálního není.

Přitom by stačilo něco, co by sémanticky vyznačilo obsah od uživatele a zároveň mu nedovolilo uzavřít žádný nad tímto místem otevřený tag. Stejně tak by to nedovolilo nechat žádný tag otevřený.

No tak asi nezbývá než nadále používat nějaké řešení pomocí ošetřování vstupů na serverové straně.
Kubo2
Profil
iiic:
nezbývá než nadále používat nějaké řešení pomocí ošetřování vstupů na serverové straně.
Skôr by som povedal, že lepšie riešenie ako toto neexistuje, viď [#4] Chamurappi.

Stejně tak by to nedovolilo nechat žádný tag otevřený.
Ako by potom skončil tag <br> či <img>? :-)
jenikkozak
Profil
Kubo2:
Ako by potom skončil tag <br> či <img>? :-)
Zavírací ostrou závorkou.
Kubo2
Profil
jenikkozak:
Ja myslím v tom jeho riešení, kde chce uzavierať každý tag, t.j. napr. <img ...></img>.
margin
Profil *
Kubo2:
Ako by potom skončil tag <br> či <img>
Každý tag, jak počáteční, tak i koncový, končí zavírací ostrou závorkou.
Ale měl jsi na mysli uzavření elementu, v HTML není nutné a v XHTML syntaxi je to takto <br />.
http://jecas.cz/html-znacky
Kubo2
Profil
margin, jenikkozak:
„ako skončia“ som významovo myslel smerom „ako dopadnú“, „ čo sa s nimi stane“.
Ale ďakujem za upozornenie.
Joker
Profil
iiic:
Přitom by stačilo něco, co by sémanticky vyznačilo obsah od uživatele a zároveň mu nedovolilo uzavřít žádný nad tímto místem otevřený tag. Stejně tak by to nedovolilo nechat žádný tag otevřený.
To je nesmyslný požadavek.
Když pominu, že by HTML parsery musely být daleko složitější a kombinace té značky s některými konstrukcemi by vyvolávala těžko řešitelné situace*, tak:
Jak by se poznal konec uživatelského vstupu?
Pokud odpověď je, že by se uživatelský vstup musel kontrolovat na výskyt té samotné značky pro uživatelský vstup -no a taky na výskyt konstrukcí zneplatňujících zamýšlenou koncovou značku uživatelského vstupu (třeba komentář)-, tak žádnou takovou „superznačku“ nepotřebujeme. Došli jsme k tomu, že je prostě nutné kontrolovat uživatelský vstup.

* Příklady (<tag> je ta značka pro uživatelský vstup):
1. <tag> <!-- </tag> další obsah
2. <tag> <script> alert("</tag>"); </script></tag>
3. <tag> <span title="</tag>"></span></tag>
jenikkozak
Profil
Kubo2:
Tak znovu:
„ Stejně tak by to nedovolilo nechat žádný tag otevřený.“
Ako by potom skončil tag <br> či <img>? :-)
Ten element otevřený nezůstane. (Ať už si to „otevření“ znamená co chce.) Čili nestalo by se s nimi nic.
Str4wberry
Profil
Jak píše Chamurappi. Těžko takový element může fungovat, protože by ho mohl uživatel stále uzavřít. Jedině snad, kdyby takový element ukončovala ne první, ale až poslední odpovídající značka, takže by se uživatelské ukončení ignorovalo, což by dost nabouralo stávající zvyklosti.

Myslím, že není problém vadný HTML kód opravit.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: