gpt4 book ai didi

java - 如何清理和清理用户提交的 url 以便在 java 中重新显示?

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:45 24 4
gpt4 key购买 nike

我希望用户能够提交一个 url,然后将该 url 作为链接显示给其他用户。

如果我天真地重新显示用户提交的内容,我会让自己对

这样的 url 保持开放
http://somesite.com' ><script>[any javacscript in here]</script>

当我向其他用户重新显示它时会做一些令人讨厌的事情,或者至少让我看起来不专业,因为我没有阻止它。

是否有一个库(最好是 Java)可以清理 url,以便它保留所有有效的 url,但清除任何漏洞利用/tomfoolery?

谢谢!

最佳答案

包含 ' 的 URL 是完全有效的。如果您在不转义的情况下将它们输出到 HTML 文档,那么问题在于您缺乏 HTML 转义,而不是输入检查。您需要确保每次将任何可变文本(包括 URL)输出到 HTML 文档时都调用 HTML 编码方法。

Java 没有内置的 HTML 编码器(表现不佳!)但大多数 Web 库都有(take your pick,或者用一些字符串替换自己编写)。如果你使用 JSTL 标签,你会得到 escapeXml 默认情况下是免费的:

<a href="<c:out value="${link}"/>">ok</a>

虽然您的主要问题是 HTML 转义,但验证输入 URL 是否有效以捕获错误仍然有潜在的好处 - 您可以通过使用 new URL(...) 解析它来做到这一点> 并查看您是否收到 MalformedURLException。

您还应该检查 URL 是否以已知良好的协议(protocol)开头,例如 http://https://。这将防止任何人使用危险的 URL 协议(protocol),如 javascript:,它可以像 HTML 注入(inject)一样容易地导致跨站点脚本。

关于java - 如何清理和清理用户提交的 url 以便在 java 中重新显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194284/

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