2011-09-01 7 views
7

Estoy escribiendo una función de análisis de comentarios en PHP.¿Por qué debería usar BBCode pero no HTML en formularios de comentarios?

Dado que BBCode no es un lenguaje de marcado real, nunca me ha gustado el estilo de escritura.
Así les doy a los visitantes la posibilidad de usar código HTML básico en formularios de comentarios.
Y al publicar, PHP verificará las etiquetas/atributos no permitidos y no válidos, y los reemplazará o eliminará.

Creo que hace el mismo trabajo y la salida es exactamente la misma que con BBCode.

Si esto es cierto, ¿por qué hay BBCode? ¿BBcode tiene alguna ventaja sobre HTML?

actualización

como monocromo respondió

Si está seguro de que su filtro HTML es lo suficientemente seguro, que debe estar bien aunque

así, no estoy seguro de la escritura el filtro mismo, pero hay algunos filtros mejor valorados como PHP Analizador DOM simple HTML, HTML Purifier, htmLawed ...

The BBCode está desarrollado por UBB y aún se usa ampliamente, como phpBB.

¿Los desarrolladores de UBB/phpBB no están seguros de sus habilidades para escribir un filtro HTML perfecto? (Supongo que no)

Además, al igual que el Markdown que utiliza StackOverflow ... si HTML + Parser hace el trabajo, ¿por qué inventar otro "idioma" de todos modos? (excepto para guardar algunos bits ...)

+2

Markdown es el nuevo marcado. – BoltClock

+1

Creo que el marcado HTML es bastante fácil de explotar y su cheque es una solución alternativa. Los hackers pueden ser bastante ingeniosos cuando se trata de encontrar agujeros de seguridad;) – knittl

+0

@knittl Así que esto es sobre mí/hackers de PHP VS. Bueno, tal vez debería haber agregado "SI ... mi sistema de análisis está BIEN/ESTRICTAMENTE escrito". Realmente me gustaría ver un ejemplo de pirateo contra un formulario html-allowed-comment-form. – Jon

Respuesta

2

BBCode elimina el problema de que su filtro HTML pueda tener errores para que el comentador pueda comentar el código que se supone que no debe comentar. Si está seguro de que su filtro HTML es lo suficientemente seguro, debería estar bien sin embargo.

Otro problema es que los comentarios HTML pueden romper su diseño, p. cuando el comentarista pone en un solo cierre </div> o algo así.

+4

No, no es así. El analizador de BBCode podría tener errores que también permitan XSS. – Quentin

4

Su principal ventaja es la prevención de inyecciones de código no deseadas. Es por eso que usaría algo como BBCode o Markdown.

Al menos debe trabajar con una lista blanca de etiquetas HTML permitidas y no con listas negras.

+0

+1 para comentario en la lista blanca. –

+3

* Todas las etiquetas (del cuerpo) * pueden tener secuencias de comandos adjuntas a sus atributos, p. estilo. También necesitarás una lista blanca de nombres attr. – Cheekysoft

1

BBCode se hizo popular ya que permite al usuario un acceso limitado a html mientras trata de evitar XSS. BBCode se hizo popular antes de que existieran soluciones como HTML Purifier. En realidad, BBCode y Html Purifier tienen sus propios problemas de seguridad. Es solo que BBCode era una solución más simple a este problema.

0

Utilice BBcode + convertir todas las etiquetas a la izquierda htmlspecialchar parece ser totalmente libre de XSS para mí. (a menos que el analizador de BBcode sea realmente súper malo)

En última instancia, ambos alcanzan el mismo objetivo. Actualmente elijo BBcode porque HTMLpurifier auto tira la etiqueta en lugar de reemplazar la etiqueta izquierda con html specialChar. Al menos en la demostración, no vi la función manteniendo la etiqueta izquierda.

Así que hay un problema ya que queremos que el usuario escriba & lt; en lugar de convertirlo automáticamente a <. Y algo más de pereza para validar todos los datos.

Cuestiones relacionadas