gpt4 book ai didi

Python、Jinja2 nl2br 和安全性

转载 作者:行者123 更新时间:2023-11-30 23:12:42 25 4
gpt4 key购买 nike

我正在使用snippet from Jinja2用于在 html 中显示多行文本,我面临一个问题:

如果用户输入

"Hello\nMy name is Jon"

nl2br标签会将其呈现为

"Hello<br />My name is Jon"

正确解释 br(断行)。

现在这很好,但是如果用户输入

"Hello<script>alert('hacked');</script>"

由于我必须解释 html 才能正确显示断线,因此 <script>也将被执行...

如何避免这种情况?

最佳答案

您链接到的示例代码已经在替换换行符之前转义输入。随后,该文本被标记为安全,因为此时它就是安全的。相关代码为:

from jinja import escape, Markup
value = escape(value)
return Markup(value)

对于输入"Hello<script>alert('hacked');</script>" ,结果为 "Hello &lt;script&gt;alert(&#39;hacked&#39;);&lt;/script&gt;" 。请注意,有问题的语法已被转义字符替换。当在 HTML 文档中渲染时,不会执行任何脚本,只有文本。

关于Python、Jinja2 nl2br 和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29701870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com