首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助识别ESAPI.validator()和ESAPI.encoder()之间的区别

需要帮助识别ESAPI.validator()和ESAPI.encoder()之间的区别
EN

Stack Overflow用户
提问于 2016-06-30 15:49:43
回答 1查看 5.7K关注 0票数 1

我们正在我们的网站上实现应用程序安全。这是一个基于REST的应用程序,所以我必须验证整个请求有效负载,而不是每个属性。此有效载荷需要针对所有类型的攻击(SQL、XSS等)进行验证。在浏览时,我发现人们正在使用ESAPI进行网络安全。

我很困惑于ESAPI.validator().getValidXXXESAPI.encoder() Java的ESAPI库。这两者之间的区别是什么,以及何时使用哪个API。我还想知道在什么情况下我们可以使用这两个API的

根据我的理解,我可以使用两个API的示例对输入进行编码,以形成有效的html:

  1. ESAPI.encoder().encodeForHTML(input);
  2. ESAPI.validator().getValidSafeHTML(context, input, maxLength, allowNull)

对于XSS攻击,我使用&matcher对html标记进行了代码更改,但我希望使用ESAPI实现同样的目标。有人能帮我实现这个目标吗。

是否有类似于ESAPI的为websecurity开发的新java插件,而我并没有遇到这种情况。我已经找到了https://jsoup.org/,但它只解决了XSS攻击,我正在寻找一个库,它可以为多个攻击提供API (SQL /XSS)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-05 22:20:07

代码语言:javascript
复制
ESAPI.encoder().encodeForHTML(input);

当您将输入发送到浏览器时,您将使用此方法,以便将发送的数据转义到HTML中。这可能会变得很棘手,因为您必须知道确切的数据是否是在将数据呈现到HTML之前传递给javascript。或者它是否被用作HTML属性的一部分。

我们使用:

代码语言:javascript
复制
ESAPI.validator().getValidSafeHTML(context, input, maxLength, allowNull).

当我们想要从客户端获得“安全”HTML时,它是由一个antisamy策略文件支持的,该文件详细描述了我们将从用户那里接受的HTML标记和HTML属性的类型。默认情况是拒绝,因此,如果要接受以下内容,则必须显式地告诉策略文件:

代码语言:javascript
复制
<a href="www.someurl.com">text</a>

您需要指定"a“标记,并允许"href”属性,甚至可以针对文本字段和标记属性中的内容指定进一步的规则。

您只需要"getValidSafeHTML“,如果您的应用程序需要接受来自用户的HTML内容.这在大多数公司的应用中都是似是而非的。(Myspace曾经允许这样做,结果是Samy蠕虫。)

通常,当内容进入应用程序时使用验证器API,当将内容定向回用户或后端解释器时使用编码器API。AntiSamy不再受支持,所以如果您需要一个“安全的HTML”解决方案,请使用OWASP的HTML消毒液。

是否有类似于ESAPI的为websecurity开发的新java插件,而我并没有遇到这种情况。我已经找到了https://jsoup.org/,但它只解决了XSS攻击,我正在寻找一个库,它可以为多个攻击提供API (SQL /XSS)

另一个尝试类似安全性的方法是HDIV。这是一个由HDIV开发人员将HDIV与ESAPI进行比较的答案。

*免责声明:我是ESAPI开发人员和OWASP成员。

Sidenote:我不鼓励使用Jsoup,因为默认情况下它会变异传入的数据,构造“最佳猜测”(无效)解析树,并且不允许您对该行为进行细粒度控制.意思是,如果有一个实例,您希望覆盖并强制执行特定类型的策略,强生断言,它总是比你聪明.但事实并非如此。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38127965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档