我正在尝试使用ESAPI.jar为我的Web应用程序提供安全性.基本上我刚开始使用ESAPI.jar.但问题是我无法使用ESAPI运行一个简单的程序.小代码片段是:
String clean = ESAPI.encoder().canonicalize("someString");
Randomizer r=ESAPI.randomizer();
System.out.println(r);
System.out.println(clean);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Attempting to load ESAPI.properties via file I/O.
Attempting to load ESAPI.properties as resource file via file I/O.
Not found in 'org.owasp.esapi.resources' directory or file not readable: D:\Eclipse-Workspace\Test\ESAPI.properties
Not found in SystemResource Directory/resourceDirectory: .esapi\ESAPI.properties
Not found in 'user.home' (C:\Documents and Settings\user.user) directory: C:\Documents and Settings\user.user\esapi\ESAPI.properties
Loading ESAPI.properties via file I/O failed. Exception was: java.io.FileNotFoundException
Attempting to load ESAPI.properties via the classpath.
ESAPI.properties could not be loaded by any means. Fail. Exception …
Run Code Online (Sandbox Code Playgroud) i have a litte JavaEE project, and i have to secure it with the OWASP ESAPI
i integrated the ESAPI like this in Maven:
<!-- ESAPI Version 2.0.1 -->
<dependency>
<groupId>org.owasp.esapi</groupId>
<artifactId>esapi</artifactId>
<version>2.0.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
So after this i can use the ESAPI classes for programming.
i also included the .esapi
folder in the server start:
-Dorg.owasp.esapi.resources=/home/joergi/.esapi/
Run Code Online (Sandbox Code Playgroud)
I also copied the ESAPI.properties
and the validation.properties
into
src/main/resources
Run Code Online (Sandbox Code Playgroud)
(I'm not sure if it works, but i get no error while starting the …
我试图在我的Web应用程序中使用OWASP ESAPI库来转义JSP中的请求参数,如下面的ESAPI.encoder().encodeForHTML(request.getParameter()).
我在WEB-INF/lib下添加了esapi-2.1.0.jar,但是我得到了以下异常
org.owasp.esapi.errors.ConfigurationException:无法以任何方式加载ESAPI.properties.失败.org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration(DefaultSecurityConfiguration.java:439)
但我无法在JAR文件中找到ESAPI.properties.知道我能在哪里得到这个吗?我还应该在哪里放置这个属性文件?请帮忙.
我是一名Java开发人员,负责领导App Security,我偶然发现了OWASP组织及其配套Java API ESAPI.
在几个月前我在这个网站上提出的另一个问题中,有人向我指出ESAPI是开源应用行业的主要参与者.
我现在想知道的是,我确信ESAPI与javax.security.auth
认证/授权领域的内置Java安全模型(根据)重叠,也许在其他领域.但是,如果严格遵守Java安全API,那么ESAPI明确解决了app sec的哪些领域是无法实现的?
基本上,我问我是否有必要学习ESAPI,如果它的所有优点/功能已经包含在某些现有的Java API中.提前致谢!
encodeForHtml()
(CF10中的新内容)vs htmlEditFormat()
,它们有何不同?
有一个Spring全局@ExceptionHandler(Exception.class)
方法可以记录异常:
@ExceptionHandler(Exception.class)
void handleException(Exception ex) {
logger.error("Simple error message", ex);
...
Run Code Online (Sandbox Code Playgroud)
Veracode扫描表明此日志记录已经Improper Output Neutralization for Logs
建议使用ESAPI记录器.有没有办法在不将记录器更改为ESAPI的情况下修复此漏洞?这是我遇到此问题的代码中唯一的地方,我试图找出如何以最小的更改来修复它.也许ESAPI有一些我没有注意到的方法?
PS当前记录器是slf4j上的Log4j
UPD: 最后我使用了ESAPI记录器.我以为它不会使用我的默认日志服务,但我错了,它只是使用我的slf4j logger接口和适当的配置.
private static final Logger logger = ESAPI.getLogger(MyClass.class);
...
logger.error(null, "Simple error message", ex);
Run Code Online (Sandbox Code Playgroud)
ESAPI具有log4j记录器和记录器工厂的扩展.可以配置在ESAPI.properties中使用的内容.例如:
ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory
Run Code Online (Sandbox Code Playgroud) 在我当前的项目中,我使用 Maven 和 Spring。我目前正在使用 SLF4J 记录器进行日志记录服务。取而代之的是,我想使用 OWASP-ESAPI 记录器。我不想使用OWASP-ESAPI
安全性,只想使用日志服务。任何人都可以指导我如何OWASP-ESAPI
通过以最小的努力替换 slf4j 记录器来使用记录器吗?我尝试了很多谷歌搜索,但没有任何帮助。我会非常感谢一些链接来获取有关OWASP-ESAPI
记录器的知识。
我有两个服务器 - 一个生产和一个开发 - 在Windows Server 2008 R2上的IIS 7.5上运行ColdFusion 9.0.1.两者配置相同.我们有一个短暂的问题,经过几周到几个月的平稳运行时间,网站的某些部分(特别是CFIDE管理员门户网站和任何带有cfwindow标签的页面)将开始抛出"无法初始化类coldfusion.security.ESAPIUtils"错误.日志.
根据我几个月前卸载并重新安装所有热修复程序的一些 建议,五元组检查我是按照正确的顺序应用它们并遵循正确的指令集.
这并没有解决问题,但是当我梳理日志文件时,我注意到在jRun重启后,日志中出现了另一个与ESAPI相关的错误("无法以任何方式加载ESAPI.properties.失败.").我尝试添加了以下声明为java.args
在jvm.config
:
-Dorg.owasp.esapi.resources=E:\JRun4\servers\cfusion\cfusion-ear\cfusion-war\WEB-INF\cfusion\lib
Run Code Online (Sandbox Code Playgroud)
这似乎解决了几个月的问题; 没有错误,事情很好.然后,昨天生产服务器再次开始抛出错误.我尝试重启JRun并重启服务器,错误仍然存在.开发服务器非常好.
我尝试创建一个只是实例化和重写ESAPIUtils实例的脚本.在dev上,它会转储有关该对象的元数据; 在生产中,页面导致错误.
我已经和这个问题一直争吵了近一年.有时它会在几天后自行解决,有时会持续数周.我还没有找到一种"诱导"这种状况的方法,所以我们一直坚持使用似乎有效的一段时间的不可测试的"修复",然后不这样做.
这似乎是完全切向的,但我们已经有了内置IsImageFile()
函数为有效图像返回false的实例.IsImageFile()怪异似乎开始于"无法初始化类coldfusion.security.ESAPIUtils"疯狂开始之前.
以下是服务器版本:
ColdFusion Version: 9,0,1,274733
Operating System: Windows Server 2008 R2 amd64 6.1
Web Server Software: Microsoft-IIS/7.5
Java JVM: 1.8.0_05 Oracle Corporation
JEE Server: JRun/4.0
Security Hotfixes (9.0.1): APSB13-27, APSB13-19, APSB13-13, APSB13-10, ColdFusion 9.0.1 Cumulative Hotfix 4 (APSB13-03, APSB12-26, APSB12-21, APSB12-06, APSB11-29, APSB11-14, APSB11-04, APSB10-18), ColdFusion 9.0.1 Cumulative Hotfix 3, ColdFusion …
Run Code Online (Sandbox Code Playgroud) 我正在将 log4j 升级到 log4j2。在那个过程中,我收到了一个 Logger 类转换异常。下面是错误。
Caused by: java.lang.ClassCastException: org.apache.log4j.Logger cannot be cast to org.owasp.esapi.Logger
at org.owasp.esapi.reference.Log4JLogFactory.getLogger(Log4JLogFactory.java:88)
at org.owasp.esapi.ESAPI.getLogger(ESAPI.java:154)
at org.owasp.esapi.reference.DefaultEncoder.<init>(DefaultEncoder.java:75)
at org.owasp.esapi.reference.DefaultValidator.<clinit>(DefaultValidator.java:91)
... 45 more
Run Code Online (Sandbox Code Playgroud)
在我的旧代码(log4j 属性文件)中,我看到了对这个 Logger 的引用。下面是我们在旧代码中的代码。
log4j.loggerFactory=org.owasp.esapi.reference.Log4JLoggerFactory
Run Code Online (Sandbox Code Playgroud)
现在在 log4j2 中,我正在使用 log4j2.xml 文件,但没有找到与该行等效的任何标记。任何人都可以建议我如何进行吗?
注意:我在 JBoss EAP 7 中运行我的应用程序
我想说,这是一个奇怪的现象,它只是在过去几个月中才开始出现的。使用ColdFusion的时,Microsoft Edge中的Textareas仅显示额外的换行符encodeForHTML()
。如何复制...
<cfset x = chr(49)&chr(13)&chr(10)&chr(50)&chr(13)&chr(10)&chr(51)>
<cfoutput>
<textarea rows="10">#encodeForHTML(x)#</textarea>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
在Edge中,它显示如下:
但是在所有其他浏览器(甚至直到最近的Edge up)中,它看起来都是这样……
这是另一个奇怪的行为,如果您检查该元素,则双击该值,就好像您将要对其进行编辑一样,不进行任何更改,只需按Enter键,多余的换行符就会消失。这是一个生动的演示...
所以我决定输出所有经过的ascii,encodeForHTML()
这就是结果...
49| = 1
38|35|120|100|59|38|35|120|97|59| = 

50| = 2
38|35|120|100|59|38|35|120|97|59| = 

51| = 3
Run Code Online (Sandbox Code Playgroud)
这是我所期望的。几年前,我与esapi项目的一位创始人进行了交谈,该项目的encodeForHTML()
用途是什么,他说该项目会关闭分页符以防止日志欺骗。因此,既然这是最近才开始在Edge中发生的,您是否会说这是Edge的问题,并且无法

在文本区域内正确处理?还是有其他方法可以解决此问题,但仍然可以从XSS安全地进行修复?谢谢!
我还尝试浏览Microsoft Edge的发行说明,但找不到与此问题相关的任何内容。