Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Content Management: Veiligheid vs Gebruiksvriendelijkheid

D72
10 antwoorden
  • Hallo,

    Ik ben bezig met een CMS voor een website en loop tegen het volgende probleem aan:

    Gebruikers van het CMS moeten op een makkelijke manier de pagina's kunnen bewerken. Hierbij kun je denken aan vet zetten van de tekst, plaatjes invoegen, links maken naar andere pagina's enz. Hiervoor zou je een op bbcode gebasseerde code voor kunnen gebruiken. echter voor leken is zelfs dit niet echt gebruiksvriendelijk. Het is echt wel veilig, want htmlspecialchars in PHP werkt nog steeds en filtert mooi alles eruit.

    Aan de andere kant kun je ook bijvoorbeel HTML Area gebruiken van Interactivetools. Een heel gebruiksvriendelijke IE only tool. Maar met een paar simple regels code :

    [code:1:f73fee7d61]
    <?php
    phpinfo();
    ?>
    [/code:1:f73fee7d61]

    wordt heel de server configuratie naar buiten gegooid. Niet iets wat je graag wilt. htmlspecialchars kun je nu echter niet meer gebruiken, omdat je dan de opmaak eruit filtert.

    Is er een tussen oplossing mogelijk? Een veilige oplossing, die toch dezelfde gebruiksvriendelijkheid heeft als HTMLarea en nog in de meeste browsers werkt? Wat zijn jullie ervaringen? Wat wordt er in de praktijk vaak gebruikt?

    Alvast bedankt,

    Rob
  • Het makkelijkste is om een subset van html toe te staan. Dit is als je het goed doet even veilig als bbcode.
  • [quote:e6f4ceb461="Rob van Esch"]Maar met een paar simple regels code :
    [knip] wordt heel de server configuratie naar buiten gegooid. Niet iets wat je graag wilt.[/quote:e6f4ceb461]
    Ik ken de component niet die je hier noemt, maar het lijkt me vreemd dat de code uit de invoer server-side geparsed wordt bij de uitvoer. Normaalgesproken is het alleen mogelijk om tekst in te voeren via het invoerveld en wordt de opmaak via functies toegevoegd (rechtstreekse invoer van HTML kan vaak uitgeschakeld worden).
    Er zit natuurlijk een verschil tussen content naar de client schrijven (wat hier gebeurd) en content eerst parsen en daarna naar de client schrijven.

    Daarnaast lijkt het me van belang wie de gebruikers zijn die de invoer van teksten doen. Zijn dat contentbeheerders of bezoekers? In het eerste geval zou ik me niet zo druk maken, waarom zou een eigenaar van de pagina z'n eigen site onderuit willen halen?
    In het tweede geval zou ik gewoon geen opmaak aanbieden. Tenzij je het wel heel erg goed kan afschermen (bijvoorbeeld via styles).
  • Hartelijk dank voor de reacties.

    Jullie zouden dus eigenlijk adviseren om een soort van SafeHTML class te bouwen die als input een string heeft en alle tags/atrributen die je niet wilt vervangt door ''.

    Daar moet vast iets op te vinden zijn in combinatie met de php functie strip_tags.

    Het probleem daarbij is wel dat het geheel 'nette' HTML op moet leveren. Ik ga aan het klussen ;-) Iemand ideen?

    Alvast bedankt

    Rob
  • Euh, nee ;)
    Ik zou eerst adviseren om even verder te kijken naar een andere component als de genoemde component ook echt ingevoerde content gaat parsen als zijnde PHP code.

    Maar ik ben nog steeds niet overtuigd dat dit ook echt zo is (of misschien wil ik het gewoon niet geloven). Ik vermoed dat er alleen onschuldige html opmaak kan worden ingevoegd cq. uitgevoerd en dat het scenario wat jij schets dus ook niet mogelijk is.
    Tenzij je natuurlijk de ingevoerde code als files opslaat op de server waarbij ook nog de webserver deze file door de PHP parser gooit bij het opvragen. Of waarbij jezelf deze code laat interpreteren via je scripts. Maar in beide gevallen zou ik niet de component de schuld geven, maar moet je je zelf eens achter de oren krabben :P
  • http://simon.incutio.com/archive/2003/02/23/safeHtmlChecker
  • Je hebt gelijk annie. Excuses :-? Dr zat een klein foutje in mn code :S
    Maar het probleem is nog steeds dat deze component alleen in IE werkt. Je zou eens op preview moet klikken. Op zich werkt t best mooi. Maar je kan hier op de achtergrond in de html klussen. Je kunt dus heel simpel allerlei javascripts toevoegen. Wat nog steeds een onveiligheid biedt.

    De SafeHTMLChecker ziet er goed uit. Die is wel aan te passen naar mijn idee om de juiste mogelijkheden te krijgen;) Bedankt voor de link.


    Heeft iemand zelf ervaring met een soort van mark-up tool op webpagina's die wel veilig is en ook in alle browsers werkt?
  • Die PHP class gebruik ik in m'n weblog. Werkt goed.
  • Eigenlijk is het heel makkelijk:

    Eerst vervang je alle < door &lt; en alle > door &gt; en daarna kijk je welke tags wel hadden gemogen en die vervang je weer terug zoals bv <b> en <i> enzo… (die er dan uitzien als &lt;b&gt; etc.)
  • Dat gaat nooit goed werken :wink:

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.