Archief - layout beschermen tegen slechte html

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Zero Grav

Legacy Member
Om even wat 'slechte' raad te geven: Hetgeen het gemakkelijkste is om de layout niet te verkloten is feitelijk het gebruik van een iFrame. Zo werkt een site à la jsfiddle.net bijvoorbeeld ook omdat de slechte code dan in theorie contained wordt in zijn eigen pagina.

Maar er blijven tegelijk zoveel meer factoren waar ge rekening mee moet houden, zoals het effectief invoeren van uitvoerende code zoals PHP of Javascript waarmee ge dus XSS gevaren gaat krijgen.

Het meeste werk, maar uiteindelijk het veiligste is om met BBCode te werken, maar dan in uw geval een variant op BBCode die bepaalde HTML-tags toelaat die veilig zijn en de andere delen eruitfiltert zoals bijvoorbeeld een voorbeeldje van htmlpurifier. Dit heb ik nu maar snel snel gevonden, maar wordt op verschillende stackoverflow vragen wel aangeraden. Nog een ouder artikel hierover, maar het geeft wel aan waar ik naartoe wil: Chris Shiflett ▪ Allowing HTML and Preventing XSS. Om hier verder op te gaan kunt ge best verderzoeken naar een PHP HTML input sanitizer.

Dat laatste kunt ge nog steeds best gebruiken in combinatie met een iFrame omdat ge nog steeds het risico loopt op onafgesloten tags. Daarvoor zult ge effectief een html-parser en correcter moeten hebben. Alhoewel de klasse van htmlpurifier.org daar ook wel een poging voor doet.

Ge spreekt trouwens van de concurrentie, kijk eens hoe zij dit probleem hebben aangepakt?

Bram

Legacy Member
Merci voor de concrete post Zero Grav!

Ik heb leesvoer voor tijdens een dood moment ;)

dJeez

Legacy Member
Een alternatief voor het gebruik van een iframe is het volgende :
  1. Gebruik de "paste from Word" functionaliteit van je wysiwyg editor per default ipv alle opties open te laten (aangezien die enkel de extra MS markup verwijderd heeft dat nl. toch geen impact op correcte code).
  2. Laat er bij het posten een tool op los om te checken dat de markup correct is (HTMLTidy of iets dergelijks) en ze desnoods te corrigeren. (PHP heeft daar support voor via http://php.net/manual/en/book.tidy.php BTW, maar ik heb geen idee of die extensie nog werkt bij recente PHP versies, 't is al lang geleden dat ik die nog gebruikt heb...)
  3. Voeg het (gecorrigeerde) geheel in in een div met vaste dimensie(s) met overflow op auto.

Zo heb ik dat indertijd toch gedaan en dat werkte ook wel degelijk :p.

denk

Legacy Member
Bram zei:
We gebruiken momenteel al TinyMCE. Het probleem zit hem jammer genoeg bij mijn gebruikers (zo'n 20 000), die de paste from word knoppen etc niet gebruiken.

Ik ga wel eens nakijken of ik die html cleanup niet kan forceren bij het submitten.

Eum? TinyMCE heeft een plugin hiervoor - deze vind je ook gewoon direct terug...
TinyMCE - paste

Als je tekst paste, dan wordt deze automatisch opgekuist.

W0utR

Legacy Member
Dat je tabel soms uitgerokken word kan je al makkelijk oplossen door deze een breedte en hoogte te geven en dan een overflow toepassen.

frenzal

Legacy Member
je kan in ckeditor (tinymce) wss ook zorgen dat bij paste het geforceerd wordt als plaintext, dan krijg je automatisch een plaintext popup en kunnen ze al veel minder omzeep helpen. maar het zal mogelijk wel zorgen voor copy/paste problemen binnen huidige tekst als daar de opmaak moet meegekopieerd worden...

Bram

Legacy Member
frenzal zei:
je kan in ckeditor (tinymce) wss ook zorgen dat bij paste het geforceerd wordt als plaintext, dan krijg je automatisch een plaintext popup en kunnen ze al veel minder omzeep helpen. maar het zal mogelijk wel zorgen voor copy/paste problemen binnen huidige tekst als daar de opmaak moet meegekopieerd worden...

Doen we nu ook al, maar de mensen gebruiken het nauwelijks, jammer genoeg :p

frenzal

Legacy Member
maar as dat aanstaat kunnen ze toch niet meer pasten zonder die popup dacht ik?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan