gpt4 book ai didi

java - ELResolver 转义表达式的所有字符串输出

转载 作者:行者123 更新时间:2023-12-04 06:49:38 26 4
gpt4 key购买 nike

我有一个现有的 Web 应用程序,我需要为其添加防止脚本攻击的保护。为此,我需要在页面上显示之前转义字符串。一种方法是 servlet 过滤器。我正在探索的另一个问题是,如果返回是字符串类型,我可以编写一个 ELResolver 来转义任何其他 ELresolver(数组、映射等)的输出吗?
谢谢,

最佳答案

JSTL 的帮助下,有两种方法可以实现这一点。 (如果尚未安装,只需将 jstl-1.2.jar 放入 /WEB-INF/lib 文件夹中)。

  • 使用 <c:out> JSTL core 的标签标签库。默认情况下,它会转义 XML(因此也会转义 HTML)特殊字符。
    <c:out value="${param.foo}" />
  • 使用 fn:escapeXml() JSTL functions的功能标签库。这被 <c:out> 在“幕后”使用标签。如果您想要更多格式良好的 XML 输出和/或不想使用嵌套在其他标签的属性中的标签污染您的 JSP,则更有用:
    <input name="foo" value="${fn:escapeXml(param.foo)}">

  • 也可以看看:
  • Hidden features of JSP/Servlet
  • How to avoid Java code in JSP


  • 更新 :根据您错误地发布为答案的更新/评论:

    c:out and fn:escapeXml are the obvious options. But I am just being lazy trying to avoid changes to multiple jsps, if i can achieve the same at one place.



    不,你不能。让这成为下一次的教训,从一开始就正确清理用户控制的输入。

    关于java - ELResolver 转义表达式的所有字符串输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310446/

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