问题标签 [esapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4642 浏览

java - 使用 ESAPI 时允许百分比符号的模式

我正在使用 RegEx^[\\p{L}\\p{N}:\\-.\\s_&.,$()\\*%]*$使用 ESAPI 验证其中一个字段。

如果我的输入是1234%1234%%1234%%%%1它被视为 TRUE。但是,如果我可以输入%12或者它失败了。1234%121234%%12

我的观察是它不允许在%symbol之后超过一个字符/数字。

我可以知道我的 RegEx 中是否有任何错误吗?RegEx 模式应该是什么,以允许%任何有效字符后面或前面有任意数量的符号?

提前致谢。

0 投票
1 回答
1239 浏览

java - 调用 DefaultValidator.getValidFileName() 时出现 NoSuchMethoException

我正在尝试使用 ESAPI 提供的 jar (esapi-2.0_rc11) 中 DefaultValidator 类的 getValidFileName (String, String, list, boolean) 方法来验证文件名。但是在运行时得到没有这样的方法异常。

这是我的代码:

我正进入(状态 java.lang.NoSuchMethodError:org/owasp/esapi/reference/DefaultValidator.getValidFileName(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Z)Ljava/lang/String;

jar中的代码:

有人请帮我解决这个问题。

0 投票
1 回答
4852 浏览

tomcat - Tomcat 中的 ESAPI 属性文件

我在 Tomcat 战争应用程序中使用 ESAPI 加密。我想从战争之外的目录加载 ESAPI.properties 文件,以便为每个环境提供不同的密钥和盐。我也希望每场战争都有一个不同的 ESAPI.properties 文件,这样每个应用程序都将进行个性化配置。根据 org.owasp.esapi.reference.DefaultSecurityConfiguration 的文档,实现这一目标的方法很少。

1) SecurityConfiguration.setResourceDirectory("C:\temp\resources")。

2) System.getProperty("org.owasp.esapi.resources")

3) System.getProperty("user.home") + "/.esapi" 目录里面

4) 类路径上的第一个“.esapi”或“esapi”目录。

前 3 个选项将强制每个 tomcat 配置一个配置。这意味着属性文件位置在所有部署的战争中都被强制执行。(第一个选项使用 ClassLoader.getSystemResource - 要求路径是类路径的一部分)

有没有办法使用Tomcat配置来完成它?

我还找到了一种覆盖 ESAPI 默认安全配置的方法,我可以在其中扩展 DefaultSecurityConfiguration 并覆盖 getResourceFile,但是 ESAPI javadoc 说这种方法应该“从不”使用——我不确定这是什么原因。

有什么建议么?

0 投票
1 回答
498 浏览

java - ThreadLocal 共享数据?

无论如何,我知道以下是不可能的,但它发生在我们的一个生产环境中:

设置

  • ESAPI 2.01
  • 主 servlet 过滤器设置和删除当前请求线程本地对象:

    /li>

所有请求都通过此过滤器,并ESAPI.currentRequest()在整个系统中使用。

  • 路径 A ( http://server/path_a/)
    • 一直到它到达method_a,这个方法不能从path_b
  • 路径 B ( http://server/path_b)
    • 一直到它到达method_b,无法从path_a

这两条路径都经过 servlet 过滤器(映射“ /*”)

我收到的其中一封错误邮件表明path_a正在引发错误,这反过来又会启动错误邮件,在邮件代码中,当前请求(通过ESAPI.currentRequest())被枚举为请求信息。

问题

在错误邮件中,来自的请求信息与来自path_a的堆栈跟踪信息相关method_b,对我来说这似乎是不可能的,因为两者都在单独的线程中运行。

问题

这怎么可能?我无法在本地重新创建它,除了设置和清除之外,我还必须采取某些预防措施ThreadLocal吗?这可能是tomcat设置的问题吗?我迷路了。


PS:问题中的代码已被简化,因为例如代码库太大


错误邮件

0 投票
2 回答
4641 浏览

esapi - ESAPI 编码问题

我们正在尝试在我们的网络应用程序中使用 ESAPI。我们在 servlet 中有以下功能。

在上面的代码中,如果我使用 out.println(ESAPI.encoder().encodeForHTML(result));,这实际上将 html 作为文本打印在浏览器上。即它像简单的文本一样显示<html>其他内容.. </html>,而不是呈现 html 页面。result只不过是需要在客户端上渲染的 html 内容。我们在这里做错了什么。请提供一些指示。我们如何在这里实现编码?

0 投票
1 回答
1339 浏览

encoding - ESAPI.encoder().canonicalize(query) 无法正常工作

我有一个这样的输入标签

我尝试使用 ESAPI canonicalize 函数进行查询,"><script>alert(1);</script> 但它不起作用,我在浏览器中收到警报。我做对了吗?

0 投票
4 回答
27277 浏览

java - 如何使用 ESAPI 修复 HTTP 响应拆分漏洞

在最近的 findbugs (FB) 运行后,它抱怨:安全性 - HTTP 响应拆分漏洞以下代码触发它:

基本上,“referrer”http 参数包含一个 url,当单击我们应用程序中的后退按钮时,浏览器会返回到该 URL。它作为参数附加到 url。经过一番研究,我知道我需要清理引荐来源网址。经过更多研究后,我发现esapi项目似乎提供了这种功能:

但是,我不知道如何检测不属于引荐来源网址的例如 jscript 代码或其他内容。那么我怎样才能用 esapi 实现呢?

我试过了:

但是这不起作用。我需要的是一个导致:

http://www.google.com (好的)

http://www.google.com/login?dest=http://google.com/%0D%0ALocation : javascript:%0D%0A%0D%0Aalert(document.cookie) (不行)

或者调用以下语句就足够了?

任何帮助表示赞赏。

0 投票
0 回答
1508 浏览

jakarta-ee - 使用 JBoss 部署时出现 org.owasp.esapi.logger 的 ClassCastException

我正在尝试在 Jboss 7.1 服务器上安装 JasperServer,并且在成功部署我在他们的网站上下载的 .war 之后遇到了很多麻烦,当我尝试登录时,我得到了这个异常:

错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/jasperserver].[default]] (http--0.0.0.0-8080-7) "Servlet.service( )" pour la servlet default a généré une exception (翻译:"servlet.service() for default servlet 生成了一个异常") : java.lang.ClassCastException: org.jboss.logmanager.log4j.BridgeLogger 不能转换为 org.owasp .esapi.Logger

我做了一些研究,似乎一个解决方案是在部署时排除 jboss.logmanager 模块,使用 jboss-deployment-structure.xml。我将以下 xml 文件放在我的 .WEB 文件夹中:

但这并没有改变任何东西。

我是否必须在某处声明此 XML 以便 Jboss 可以“读取”它?我必须把它放在别的地方吗?我的 xml 文件有遗漏吗?

或者,有没有人在安装 Jasper Server 或其他东西时遇到过这样的问题,并且有其他解决方案?

谢谢你的帮助 !

0 投票
0 回答
387 浏览

java - 在输入标签中仍然显示原始字符的同时防止 XSS

我正在使用 OWASP ESAPI 来防止 XSS 攻击。我ESAPI.encoder().encodeForHTML((String)request.getAttribute("value")) 根据他们的建议使用,但是该值显示为转义,就像输入标签的值test (11)一样。test &#40;11&#41;我也尝试过使用 JSTL 标签,但结果相同。浏览器是否有任何方式将值视为只是数据而不是脚本,以便可以以原始形式显示值。

0 投票
1 回答
10137 浏览

coldfusion - 如何在 ColdFusion 中使用多组验证尝试实现 OWASP ESAPI 验证器?

我一直在玩 ColdFusion 9 中包含的 OWASP ESAPI 实用程序。ColdFusion 的内置企业安全 API。这些encoder实用程序非常简单,我相信我让它们工作正常。我的问题是validator实用程序。

我可以让他们单独工作。也就是说,如果我validator.getValidInput()用“无效”数据调用该方法,它会抛出一个我可以捕获的错误。但是,当我尝试批量validator调用该方法时,我得到一个空指针异常。批处理指尝试执行多组验证尝试。这应该通过向方法传递一个参数来工作,该参数应该告诉它不要抛出错误,而只是将错误添加到错误列表中。我无法让它在这种模式下工作。我最好的尝试是给我一个空指针异常。validator.getValidInput()ValidationErrorList

这是具体的错误:

使用此堆栈跟踪:

这是一个简单的测试脚本。你会注意到我注释掉了一行。该行在没有 the 的情况下有效,ErrorList但会引发错误(应该如此)。我正在尝试使该方法正常工作而不会引发错误:

当我使用“有效”数据运行此脚本时,它工作正常(没有引发错误)。如果我输入一个“无效”字符,那么我会得到空指针异常。

“有效”数据this is a safe string 0123456789
示例:“无效”数据示例:(this is a safe string 0123456789-注意末尾的连字符)

这是我尝试实现的 validator.getValidInput 方法的文档链接

这是显示我正在尝试实现的文档的链接

对于它的价值,验证“规则”在validation.propertiesColdFusion 附带的文件中定义。该文件位于 {cfusion lib} 目录中。以下是我服务器中该文件的内容:

我认为这个想法是为您自己的应用程序添加规则到此文件。

有没有人获得批量validator.getValidInput()工作的方法(验证尝试组)?


更新 1

我注意到cfusion-out.log每次收到空指针异常时,都会在服务器上写入以下内容。它让我相信它正在工作到一定程度,但在尝试分配验证异常时得到一个空指针:


更新 2

我一直在研究Damon Miller为 ColdFusion 实现的 OWASP ESAPI 方法。我在他的代码中注意到他没有调用getValidInput()带有ValidationErrorList属性的方法。相反,他编写了代码来捕获生成的错误,然后自己将错误添加到列表中。嗯?我认为该方法应该为您做到这一点????

顺便说一句,我尽量不使用像他这样的库,以避免我不需要的额外膨胀。

摘自他的代码: