Java 正则表达式,小于号和大于号

发布于 2024-11-01 02:37:44 字数 154 浏览 1 评论 0原文

我有一个用户可以在互联网上输入的字符串,目前它没有针对 XSS 攻击的保护。我希望能够替换 <和>符号。俗称“小于”、“大于”、“尖括号”等。

我确信这个问题已经被问过一百万次了,但我找不到一个简单的答案。我认为正则表达式是前进的方向,但无法弄清楚如何选择这些字符。

I have a string that users are able to enter on the internet, currently it is not protected against XSS attacks. I would like to be able to replace < and > symbols. Commonly known as 'less than', 'more than', 'angle brackets' etc.

I am sure this has been asked a million times but I can't find a simple answer. I assume regex is the way forward but can't work out how to pick these characters.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

安稳善良 2024-11-08 02:37:44

你真的应该使用 StringEscapeUtils.escapeHtml() 来自 Apache Commons Lang 来代替正则表达式。例如,您需要做的就是:

String escaped = StringEscapeUtils.escapeHtml(input);

防止 XSS 的最佳实践是转义所有 HTML 实体,此方法可以为您处理这些情况。否则,您将编写、测试和维护自己的代码来完成已经完成的事情。有关更多详细信息,请参阅 OWASP XSS(跨站脚本)预防备忘单

You really should use StringEscapeUtils.escapeHtml() from Apache Commons Lang to instead of regex for this. E.g. all you need to do is:

String escaped = StringEscapeUtils.escapeHtml(input);

The best practice to protect against XSS is to escape all HTML entities and this method handles those cases for you. Otherwise you'll be writing, testing and maintaining your own code to do what has already been done. See the OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet for more details.

日暮斜阳 2024-11-08 02:37:44

Java 正则表达式不需要对尖括号进行任何特殊处理。这应该可以正常工作:

myString.replace("<", "less than").replace(">", "greater than");

希望有帮助。

-tjw

Java regex shouldn't require any special treatment for angle brackets. This should work fine:

myString.replace("<", "less than").replace(">", "greater than");

Hope that helps.

-tjw

じее 2024-11-08 02:37:44

作为正则表达式的替代方案,您可以使用 Apache Commons 等实用程序类 StringEscapeUtils 类,用于在将 HTML 字符串发回服务器时以及将它们存储在数据库中或将它们作为输出重新发送之前对其进行编码。

As an alternative to regex, you can use a utility class like the Apache Commons StringEscapeUtils class to encode your HTML strings when they are posted back to the server and before storing them in the databse or re-sending them as output.

天涯沦落人 2024-11-08 02:37:44

由于您标记了此 ,我想添加在 JSP 中转义 HTML/XML 的正常方法是使用 JSTL < /code> 标记或 fn:escapeXml() 函数。

例如,

<c:out value="${user.name}" />
<input type="text" name="name" value="${fn:escapeXml(user.name)}" />

不需要 Apache Commons Lang。另外,转义实际上应该在视图侧完成,而不是在模型/控制器侧完成。

另请参阅:

Since you tagged this , I'd like to add that the normal approach to escape HTML/XML in JSP is using the JSTL <c:out> tag or fn:escapeXml() function.

E.g.

<c:out value="${user.name}" />
<input type="text" name="name" value="${fn:escapeXml(user.name)}" />

No need for Apache Commons Lang. Plus, escaping should really be done in the view side, not in the model/controller side.

See also:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文