问题标签 [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.
java - 使用 ESAPI 时允许百分比符号的模式
我正在使用 RegEx^[\\p{L}\\p{N}:\\-.\\s_&.,$()\\*%]*$
使用 ESAPI 验证其中一个字段。
如果我的输入是1234%
或1234%%
或1234%%%
或%1
它被视为 TRUE。但是,如果我可以输入%12
或者它失败了。1234%12
1234%%12
我的观察是它不允许在%
symbol之后超过一个字符/数字。
我可以知道我的 RegEx 中是否有任何错误吗?RegEx 模式应该是什么,以允许%
任何有效字符后面或前面有任意数量的符号?
提前致谢。
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中的代码:
有人请帮我解决这个问题。
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 说这种方法应该“从不”使用——我不确定这是什么原因。
有什么建议么?
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:问题中的代码已被简化,因为例如代码库太大
esapi - ESAPI 编码问题
我们正在尝试在我们的网络应用程序中使用 ESAPI。我们在 servlet 中有以下功能。
在上面的代码中,如果我使用 out.println(ESAPI.encoder().encodeForHTML(result));
,这实际上将 html 作为文本打印在浏览器上。即它像简单的文本一样显示<html>
其他内容.. </html>
,而不是呈现 html 页面。result
只不过是需要在客户端上渲染的 html 内容。我们在这里做错了什么。请提供一些指示。我们如何在这里实现编码?
encoding - ESAPI.encoder().canonicalize(query) 无法正常工作
我有一个这样的输入标签
我尝试使用 ESAPI canonicalize 函数进行查询,"><script>alert(1);</script>
但它不起作用,我在浏览器中收到警报。我做对了吗?
java - 如何使用 ESAPI 修复 HTTP 响应拆分漏洞
在最近的 findbugs (FB) 运行后,它抱怨:安全性 - HTTP 响应拆分漏洞以下代码触发它:
基本上,“referrer”http 参数包含一个 url,当单击我们应用程序中的后退按钮时,浏览器会返回到该 URL。它作为参数附加到 url。经过一番研究,我知道我需要清理引荐来源网址。经过更多研究后,我发现esapi项目似乎提供了这种功能:
但是,我不知道如何检测不属于引荐来源网址的例如 jscript 代码或其他内容。那么我怎样才能用 esapi 实现呢?
我试过了:
但是这不起作用。我需要的是一个导致:
http://www.google.com/login?dest=http://google.com/%0D%0ALocation : javascript:%0D%0A%0D%0Aalert(document.cookie) (不行)
或者调用以下语句就足够了?
任何帮助表示赞赏。
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 或其他东西时遇到过这样的问题,并且有其他解决方案?
谢谢你的帮助 !
java - 在输入标签中仍然显示原始字符的同时防止 XSS
我正在使用 OWASP ESAPI 来防止 XSS 攻击。我ESAPI.encoder().encodeForHTML((String)request.getAttribute("value"))
根据他们的建议使用,但是该值显示为转义,就像输入标签的值test (11)
一样。test (11)
我也尝试过使用 JSTL 标签,但结果相同。浏览器是否有任何方式将值视为只是数据而不是脚本,以便可以以原始形式显示值。
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.properties
ColdFusion 附带的文件中定义。该文件位于 {cfusion lib} 目录中。以下是我服务器中该文件的内容:
我认为这个想法是为您自己的应用程序添加规则到此文件。
有没有人获得批量validator.getValidInput()
工作的方法(验证尝试组)?
更新 1
我注意到cfusion-out.log
每次收到空指针异常时,都会在服务器上写入以下内容。它让我相信它正在工作到一定程度,但在尝试分配验证异常时得到一个空指针:
更新 2
我一直在研究Damon Miller为 ColdFusion 实现的 OWASP ESAPI 方法。我在他的代码中注意到他没有调用getValidInput()
带有ValidationErrorList
属性的方法。相反,他编写了代码来捕获生成的错误,然后自己将错误添加到列表中。嗯?我认为该方法应该为您做到这一点????
顺便说一句,我尽量不使用像他这样的库,以避免我不需要的额外膨胀。
摘自他的代码: