当我离开它-6ren">
gpt4 book ai didi

php - 如何对表单中的不安全内容进行转义以防止XSS?

转载 作者:行者123 更新时间:2023-11-27 22:47:23 25 4
gpt4 key购买 nike

我知道这可能很愚蠢,但是当我在表单中显示时如何转义用户输入。我不是指任何输出,而是特别是在表单输入中。例如,如果我有输入标签并将用户文本放入值中。

<input type="text" value="'test' "test" <script>alert('hacked');</script>" />

当我离开它时,它会正确显示

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

没有 XSS 发生,但我觉得不安全,因为其他代码最终可能会破坏它。在将数据放入表单时是否有类似浏览器内置方法的方法来防止 XSS 或者我遗漏了什么?

编辑:我没有说完整的故事。对于那个很抱歉。当我使用 htmlentitieshtmlspecialchars 时,我得到了我不想要的转义数据。我在输入中看到了这个,这不是输入的内容:(

'test' &quot;test&quot; &lt;script&gt;alert('hacked');&lt;/script&gt;

我想在防止 XSS 的同时显示内容而不更改它。在这种情况下是否可能。 enter image description here

最佳答案

您应该对文本进行 HTML 编码,以便它最终像这样:

<input type="text" value="'test' &quot;test&quot; &lt;script&gt;alert('hacked');&lt;/script&gt;" />

您应该使用服务器语言来执行此操作。 Javascript 中没有对此的内置支持,因此您必须自己构建一个函数。

例如在 ASP.NET MVC 中它可能看起来像这样:

<input type="text" value="<%= Server.HtmlEncode(Model.UserInput) %>" />

MVC 2 也有 <%: %>自动编码文本的标签:

<input type="text" value="<%: Model.UserInput %>" />

编辑:

在浏览器中检查页面源以查看结果。

看起来你对文本进行了两次转义,例如 "被转义为 &quot;然后进入&amp;quot; .

关于php - 如何对表单中的不安全内容进行转义以防止XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6388109/

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