Java 自动转义提示在liferay模型中不起作用

Java 自动转义提示在liferay模型中不起作用,java,liferay,liferay-6,Java,Liferay,Liferay 6,为了防止liferay中的XSS攻击,我遵循了域模型属性的自动转义提示概念。 我在portlet-model-hints.xml中添加了以下配置 <field name="lastName" type="String" localized="true"> <hint name="auto-escape">false</hint> </field> 假的 从数据输入屏幕我添加了数据 <b><span>UNTRUS

为了防止liferay中的XSS攻击,我遵循了域模型属性的自动转义提示概念。 我在portlet-model-hints.xml中添加了以下配置

<field name="lastName" type="String" localized="true">
    <hint name="auto-escape">false</hint>
</field>

假的
从数据输入屏幕我添加了数据

<b><span>UNTRUSTED DATA</span></b> <script>alert("hai middlename")</script>
不可信数据警报(“名称”)
对于lastname字段。但是,从未使用标记的public的查看页面中,会显示已分配的输出和警报。当我们使用相关标签时,设计输出不显示

所以我的疑问是,“自动逃生”的确切用途是什么? 这种自动转义是否只适用于标签


有人能让我清楚地理解自动转义提示吗。

自动转义属性默认为true,并使用liferay类HtmlUtil.escape将html标记替换为html实体来转义html。HtmlTil的源代码中有注释

    // Escape using XSS recommendations from
    // http://www.owasp.org/index.php/Cross_Site_Scripting
    // #How_to_Protect_Yourself

你好,罗密欧谢希,谢谢你的回复。我也做了同样的事。我的意思是在我所有的html代码库中应用了HtmlUtil.escape()。但我正在检查一种通用方法来处理它。我不知道我是否正确地解决了这个问题,默认情况下自动转义为true,如果为true,则调用方法HtmlUtil.escape(),因此它将是一种通用方法。如果这不起作用,或者您希望全局应用,您可以创建一个钩子XSSPortletFilter,以便将其应用于您的请求参数EAH,如果我们希望在保存之前以通用方式筛选请求参数,则可以应用此筛选器。但在显示之前,需要一种通用的方法来过滤(转义)输出参数。为此,正如您所说,我使用了HtmlUtil.escape()方法本身。但这不是一种通用的方法,我们必须在每个需要显示值的地方调用此方法。我在您的问题中看到,您使用了auto escape false,这样字段的内容就不会被转义,这并不能阻止xss攻击,对吗?你能给我举一个使用它的完整案例的例子吗?我想我不太明白你想要达到什么目的