Procesamiento seguro de Markdown con el método inlineMarkdown de Laravel

  • Publicado el 10 febrero, 2025
  • Palabras: 71

El manejo de cadenas de Laravel incluye un poderoso convertidor de Markdown con el método inlineMarkdown, que ofrece una transformación segura de Markdown con estilo GitHub a HTML en línea.

Procesamiento seguro de Markdown con el método inlineMarkdown de Laravel

#Uso básico

El método Str::inlineMarkdown convierte el código Markdown de GitHub en HTML en línea mediante CommonMark. Sin embargo, a diferencia del método Markdown, no envuelve todo el HTML generado en un elemento a nivel de bloque:

 

use IlluminateSupportStr;

// Basic conversion
$html = Str::inlineMarkdown('**Laravel**');
// Result: <strong>Laravel</strong>

// Secure conversion with options
$html = Str::inlineMarkdown(
    'Inject: <script>alert("Hello XSS!");</script>',
    [
        'html_input' => 'strip',
        'allow_unsafe_links' => false,
    ]
);
// Result: Inject: alert("Hello XSS!");

 

#Ejemplo práctico

A continuación se explica cómo podría usarlo en un sistema de procesamiento de comentarios:

 

class CommentProcessor
{
    protected $markdownOptions = [
        'html_input' => 'strip',
        'allow_unsafe_links' => false
    ];

    public function formatComment(string $content)
    {
        return Str::inlineMarkdown(
            $content, 
            $this->markdownOptions
        );
    }

    public function processUserMention(string $content)
    {
        // Convert @username to links while keeping other markdown
        $processed = preg_replace(
            '/@(w+)/',
            '[@$1](/users/$1)',
            $content
        );

        return Str::inlineMarkdown(
            $processed,
            $this->markdownOptions
        );
    }

    public function formatNotification(string $template, array $vars)
    {
        $content = strtr($template, $vars);
        
        return Str::inlineMarkdown(
            $content,
            [
                'html_input' => 'escape',
                'allow_unsafe_links' => false
            ]
        );
    }
}

// Usage
$processor = new CommentProcessor();

$comment = $processor->formatComment('**Important** update!');
$mention = $processor->processUserMention('Hey @john, check this!');

 

El método inlineMarkdown garantiza un procesamiento seguro de Markdown manteniendo al mismo tiempo una salida HTML limpia y en línea.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión