标签: esapi

尝试使用OWASP ESAPI时找不到antisamy-esapi.xml

我一直在尝试评估OWASP ESAPI库,但一直有问题只是让它正确初始化.我为ESAPI.properties和validation.properties设置了一个资源文件夹,这些文件夹从类路径加载而没有问题.但是antisamy-esapi.xml文件没有从classpath加载,我发现2010年有一个提到这个的bug.我得到的错误是:

尝试通过文件I/O加载antisamy-esapi.xml作为资源文件.在'org.owasp.esapi.resources'目录中找不到或文件不可读:C:\ Users\mydir\resin-pro-4.0.27\antisamy-esapi.xml在SystemResource Directory/resourceDirectory中找不到:.esapi\antisamy -esapi.xml在'user.home'(C:\ Users\mydir)目录中找不到:C:\ Users\mydir\esapi\antisamy-esapi.xml

我正在使用这个库部署应用程序树脂.我已经尝试手动将xml文件放在上面的所有位置,唯一一个最终工作的是我的主目录,这对于生产部署来说效果不佳.

我还遵循其他地方发现的建议,即设置-Dorg.owasp.esapi.resources属性.这也没有用,但更有趣的是错误没有改变,这让我觉得设置没有因为某些原因而被选中.

有关此文件需要在我的项目中的位置的任何指针,以便在部署到容器后正确加载它?

提前致谢.

更新:

因此,通过挖掘代码,似乎存在用于加载ESAPI.properties的专用函数,这就是为什么该文件能够从部署到容器的标准资源(或任何其他src目录)目录加载的原因.但是,antisamy-esapi.xml的加载函数只检查user.home下的特定目录,配置的自定义目录,或者通过ClassLoader.getSystemResource()的结果.不确定为什么这些例程是分开的.经过几个小时的搞乱,我失去了耐心并复制了DefaultSecurityConfiguration.java并更正了getResourceFile()方法,以使用与loadConfigurationFromClasspath()相同的查找代码.然后我用这个类调用ESAPI.override(),它现在似乎正常工作.

java resources owasp esapi

5
推荐指数
1
解决办法
2523
查看次数

使用Hibernate Validator(JSR 303)与其他框架(ESAPI,Apache Commons等)进行输入验证

我查看了各种输入验证框架,包括用于JSR 303 bean验证的Hibernate Validator impl,以及ESAPI验证器接口及其DefaultValidator实现.

ESAPI输入验证围绕通过ESAPI.properties文件进行正则表达式模式匹配.

ESAPI路线:

ESAPI.properties:

Validator.SafeString=[A-Za-z0-9]{0,1024}$
Run Code Online (Sandbox Code Playgroud)

Java类:

ESAPI.validator().isValidInput("Name","darthvader", "SafeString", 255, false)
Run Code Online (Sandbox Code Playgroud)

Hibernate Validator/Spring MVC路由

Hibernate涉及使用各种约束注释来注释bean(@NotNull,@ Size,@ Min,@ Pattern,@ Valid等).并将Spring MVC与验证规则集成在一起.

@RequestMapping(value = "/appointments", method = RequestMethod.POST)
public String add(@Valid User user, BindingResult result) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

看起来像使用Hibernate Validator/Spring MVC提供与正则表达式匹配等相似的功能.使用ESAPI库比Hibernate验证器api 有什么优势吗?也许对于SQL注入/ XSS或那种性质的东西?针对ESAPI输入验证框架的开箱即用的XSS/SQL注入安全性?使用其中一个的任何真正优势.提前致谢.

回答我自己的问题: 我想我已经找到了自己的解决方案.使用Hibernate/Spring MVC可以提供非常强大的bean验证功能.Hibernate提供安全注释,例如@SafeHtml,@ Pattern等.基本上我们可以设置一组复合注释来提供bean验证.http://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html_single/

validation sql-injection spring-mvc hibernate-validator esapi

5
推荐指数
2
解决办法
3473
查看次数

OWASP ESAPI encodeForHTML带有一些允许的格式化标签

在Web项目中,我们使用PHP中的OWASP ESAPI进行输出编码.在某些方面,我们希望允许HTML的子集用于少量格式化选项(例如,<i><b>),同时禁止所有其他标记和特殊字符(因此它们是使用&...;语法进行实体编码的).

我看到以下可能性来实现这一目标:

  1. 告诉OWASP ESAPI编码器白名单/允许这些标记,以便它只对所有其他HTML标记和实体进行正确编码.但这似乎并不受支持.然而,我们可能(也许)写一个允许这个的补丁.
  2. 使用ESAPI进行编码后解码列入白名单的标记.这会受到攻击吗?
  3. 对此用例使用一些其他输出编码技术.还有其他图书馆吗?

特别是,我需要以下标记和属性列入白名单:

  • <br>
  • <i>
  • <b>
  • <u>
  • <big>
  • <small>
  • <sub>
  • <sup>
  • <font color="...">
  • <ul> + <li>
  • <ol> + <li>

请注意,我们的应用程序具有安全性.这意味着我们要实现的任何方法都应该只接受上面的标记(可能还有一些格式化标记),其他所有方法都必须经过实体编码.通过查看代码的(简单)代码/解释,毫无疑问,这应该是容易验证的.代码越短,评论越容易.完全手工编制的编码器并不适合这种情况.

html php security owasp esapi

5
推荐指数
1
解决办法
3471
查看次数

如何清理输入

当用户在Tomcat Webapp中提交表单时,我愿意使用“ OWASP ESAPI for Java”来清理用户的输入。

我曾经这样使用org.apache.commons.lang.StringEscapeUtils

public static String myEscapeHtml(String s)
{
    String s_escapedString = null;       
    s_escapedString = StringEscapeUtils.escapeHtml(s);
    return s_escapedString;
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否足以保护网络应用“合理地” ...

我想知道使用OWASP ESAPI应该编写哪些代码行来清理Tomcat webapp用户输入。

您能否举一个将一个或几个ESAPI“过滤器”(转义?,编码?...)应用于字符串进行净化的示例?

后端RDBMS是PostgreSQL。

Tomcat服务器可以在Linux服务器上运行,也可以在Windows服务器上运行。

感谢你并致以真诚的问候。

java input sanitize owasp esapi

5
推荐指数
1
解决办法
2万
查看次数

OWASP ESAPI的Java bean验证替代方案

随着OWASP从一个旗舰项目中降低Java ESAPI以及围绕库的所有讨论和不确定性,我想看看有哪些替代方案可用.我目前使用ESAPI进行输入验证,HTML/JS/etc编码和CSRF.我环顾四周,找到了像OVal,Vlad和其他类似的图书馆,但没有找到一个包容性的库来处理之前的3个项目.如果可能的话,我也希望它可以在外部"配置"规则(如ESAPI).

您是否有任何建议来处理Java输入/ bean验证,HTML/JS编码和CSRF令牌利用?无论是开源还是商业.

java validation encoding owasp esapi

5
推荐指数
1
解决办法
2645
查看次数

带有弹簧 mvc 的 ESAPI

我正在尝试使用 OWASP ESAPI 来验证 spring mvc 项目中的字符串。

到目前为止,我已经做了:

1-

<dependency>
   <groupId>org.owasp.esapi</groupId>
   <artifactId>esapi</artifactId>
   <version>2.1.0.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

2-在资源中添加ESAPI.propertiesvalidation.properties作为: myproject/src/resources/esapi/ESAPI.properties myproject/src/resources/esapi/validation.properties

3- 将我自己的验证添加到 validation.properties

4-在我的application.properties我设置org.owasp.esapi.resources

org.owasp.esapi.resources=classpath:esapi/ESAPI.properties

我在一个方法中有以下行

boolean isValid = ESAPI.validator().isValidInput("user id", userID, "USERID", 20, false);
Run Code Online (Sandbox Code Playgroud)

验证有效,但我在标准输出中打印出以下通知:

System property [org.owasp.esapi.opsteam] is not set

System property [org.owasp.esapi.devteam] is not set

我该如何解决?

我也得到几行:

Not found in 'org.owasp.esapi.resources' directory or file not readable: /usr/local/apache-tomcat-8.0.28/bin/ESAPI.properties

Not found in SystemResource Directory/resourceDirectory: .esapi/ESAPI.properties

SUCCESSFULLY LOADED ESAPI.properties via the CLASSPATH from 'esapi/' using current …

spring esapi

5
推荐指数
1
解决办法
2万
查看次数

ESAPI 中的编码器和规范化

我了解 ESAPI 的用途,但我看到这两行在很多 ESAPI 示例中重复出现。有人可以解释一下这到底是做什么的吗?

ESAPI.encoder().canonicalize(inputUrl,false,false);
Run Code Online (Sandbox Code Playgroud)

java esapi

4
推荐指数
1
解决办法
2万
查看次数

Web项目下ESAPI.properties的正确位置

我在项目中添加了OWASP ESAPI库。目前,我遇到了在哪里找到ESAPI.properties文件的问题。该项目以后应部署在我无权访问的几台服务器上。因此,我认为无法自定义org.owasp.esapi.resources变量,因此无法将其放在用户主目录下。所以我唯一可以放置此文件的SystemResource Directory/resourceDirectory地方是,但是它在哪里?我已经尝试放置这些文件:

.esapi/ESAPI.properties
esapi/ESAPI.properties
ESAPI.properties
Run Code Online (Sandbox Code Playgroud)

进入以下位置:

$CATALINA_HOME/webapps/<MY_PROJECT>/
$CATALINA_HOME/webapps/<MY_PROJECT>/WEB-INF
$CATALINA_HOME/webapps/<MY_PROJECT>/WEB-INF/classes
$CATALINA_HOME/webapps/<MY_PROJECT>/META-INF
Run Code Online (Sandbox Code Playgroud)

但是在所有这些地方,我都会得到一个错误: Not found in SystemResource Directory/resourceDirectory: .esapi\ESAPI.properties

那么我应该在哪里找到该文件?这是一个遗留项目(只是没有Maven的Eclipse Project),其结构非常难看。没有这样的目录,就像/src/main/resources我认为该ESAPI.properties文件应该位于的位置。我已经创建了这个目录,但是在将WAR存档部署到Tomcat之后,该文件最终应该在哪里?

java eclipse esapi

4
推荐指数
1
解决办法
1万
查看次数

跨站脚本:验证不佳(输入验证和表示、数据流)

我在 HP fortify 门户中扫描了我的应用程序,并遇到了一个问题:跨站点脚本:验证不佳(输入验证和表示、数据流)。

我已经在使用 ESAPI 库了。

我应该怎么做才能解决这个问题。是否有任何其他库/jar 来验证输入。

提前致谢。

java struts esapi fortify

4
推荐指数
1
解决办法
2万
查看次数

encodeForHTMLAttribute 与encodeForJavaScript

我试图找出encodeForHTMLAttribute和之间的区别encodeForJavaScript。尽管如此,我仍然找不到将不受信任的数据用作 JavaScript 数据值的场景,这种情况在使用 转义时会破坏代码encodeForHTMLAttribute,但在使用 转义后可以安全地工作encodeForJavaScript

我知道对于所有 javascript,建议使用encodeForJavaScript. 但我喜欢看到其中的差异。

javascript security xss escaping esapi

4
推荐指数
1
解决办法
6497
查看次数