Python将纯文本显示为html [重复]
Posted
技术标签:
【中文标题】Python将纯文本显示为html [重复]【英文标题】:Python display plain text as html [duplicate] 【发布时间】:2020-03-25 18:34:36 【问题描述】:我要做一个笔记应用程序,所以我决定为此使用summernote
和python 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 的 safe
或 escape
过滤器
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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章