Python将纯文本显示为html [重复]

Posted

技术标签:

【中文标题】Python将纯文本显示为html [重复]【英文标题】:Python display plain text as html [duplicate] 【发布时间】:2020-03-25 18:34:36 【问题描述】:

我要做一个笔记应用程序,所以我决定为此使用summernotepython flask。 我得到了一个表单,用户必须使用summernote textarea输入标题和内容,然后输入存储在数据库中。 我遇到的问题是当我尝试以纯文本形式显示注释时

这就是我展示它们的方式

            % for foo in notes %
                <div class="card">
                    <div class="card-header">
                        <div class="card-title"> foo.title </div>
                    </div>
                    <div class="card-body">
                        <div class="ribbon-wrapper ribbon-lg">
                        <div class="ribbon bg-primary">
                            <p> foo.category_name </p>
                        </div>
                    </div>
                         foo.content 
                    </div>
                    <div class="card-footer">
                        <a href="#" class="btn btn-info btn-xs"><i class="fas fa-eye"></i></a>
                        <a href="#" class="btn btn-danger btn-xs"><i class="fas fa-trash"></i></a>
                    </div>
                </div>
            % endfor %

有什么方法可以实际呈现 html 内容而不是显示为纯文本?

【问题讨论】:

【参考方案1】:

使用 Jinja 的 safeescape 过滤器

https://jinja.palletsprojects.com/en/2.10.x/templates/?highlight=safe#safe

https://jinja.palletsprojects.com/en/2.10.x/templates/?highlight=safe#escape

 foo.content | safe    
 foo.content | escape    

始终注意信任用户输入:https://flask.palletsprojects.com/en/1.1.x/security/

【讨论】:

调用| safe 过滤器将绕过自动转义功能! OP 开发了一个笔记应用程序,因此用户提供了 HTML 字符串。相信这是一个糟糕的想法,也是 XSS 攻击的绝佳机会。 flask.palletsprojects.com/en/1.1.x/security @KristofGilicze 这是真的。你有替代解决方案吗?我通常会使用 CSP 来防止这种情况发生。

以上是关于Python将纯文本显示为html [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将纯文本呈现为 HTML 维护空白 - 没有 <pre>

PHP将纯文本转换为标签链接

powershell 将纯文本字符串转换为安全字符串

Angular2将纯文本转换为url的方式(锚链接)

将纯文本文件中的 MySQL 转储导出为 JSON

XSLT 使用 xslt 2.0 或更高版本将纯文本文件处理为 XML