gpt4 book ai didi

java - HTML-Entity 转义以防止 XSS

转载 作者:技术小花猫 更新时间:2023-10-29 12:36:13 33 4
gpt4 key购买 nike

我有一些用户输入。在我的代码中,我确保对以下符号进行转义:

& -> & 
< -> &lt;
> -> &gt;

OWASP声明有更多字符需要转义。

对于属性,我做了另一种转义:

& -> &amp; 
" -> &quot;

这确保所有属性都包含在 "中。这使我对我的 html 属性有把握,但对 HTML 本身没有把握。

我想知道我的转义是否足够。我读过 this post ,但我仍然不确定我的担忧。

(JavaScript 使用 OWASP-Library 转义)

最佳答案

我也使用 OWASP ( ESAPI) 库,为不同类型的显示转义字符串,使用:

String html = ESAPI.encoder().encodeForHTML("hello < how > are 'you'");
String html_attr = ESAPI.encoder().encodeForHTMLAttribute("hello < how > are 'you'");
String js = ESAPI.encoder().encodeForJavaScript("hello < how > are 'you'");

HTML(假设为 jsp)

<tag attr="<%= html_attr %>" onclick="alert('<%= js %>')"><%= html %></tag>

更新(2017)

因为 ESAPI 编码器被认为是 legacy ,一个更好的替代方案已经创建并正在积极维护,我强烈建议使用 OWASP Java Encoder相反。

如果您的项目已经使用了ESAPI,一个integration已添加,允许您改为使用此库进行编码。

用法在他们的 wiki page 上有解释。 ,但为了完成,这是您可以使用它对数据进行上下文编码的方式:

// HTML Context
String html = Encoder.forHtml("u<ntrus>te'd'");

// HTML Attribute Context
String htmlAttr = Encoder.forHtmlAttribute("u<ntrus>te'd'");

// Javascript Attribute Context
String jsAttr = Encoder.forJavaScriptAttribute("u<ntrus>te'd'");

HTML(假设为 jsp)

<div data-attr="<%= htmlAttr %>" onclick="alert('<%= jsAttr %>')">
<%= html %>
</div>

PS:存在更多上下文并得到库的支持

关于java - HTML-Entity 转义以防止 XSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8909613/

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