标签: esapi

esapi:对于src属性,我们应该使用encodeForHTMLAttribute吗?encodeForURL?或两者?

哪一个是正确的?

<img src="#encodeForHTMLAttribute(FORM.path)#">
Run Code Online (Sandbox Code Playgroud)

要么

<img src="#encodeForURL(FORM.path)#">
Run Code Online (Sandbox Code Playgroud)

要么

<img src="#encodeForHTMLAttribute(encodeForURL(FORM.path))#">
Run Code Online (Sandbox Code Playgroud)

xss coldfusion esapi coldfusion-10

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

如何使用ESAPI修复HTTP响应分裂漏洞

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

String referrer = req.getParameter("referrer");
 if (referrer != null) {
  launchURL += "&referrer="+(referrer);
 }
resp.sendRedirect(launchURL);
Run Code Online (Sandbox Code Playgroud)

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

//1st canonicalize
import org.owasp.esapi.Encoder;
import org.owasp.esapi.Validator;
import org.owasp.esapi.reference.DefaultEncoder;
import org.owasp.esapi.reference.DefaultValidator;
[...]
Encoder encoder = new DefaultEncoder(new ArrayList<String>());
String cReferrer = encoder.canonicalize(referrer);
Run Code Online (Sandbox Code Playgroud)

但是我没有弄清楚如何检测例如jscript代码或其他不属于引用URL的东西.那么如何用esapi实现这一目标呢?

我试过了:

Validator validator = new DefaultValidator(encoder);
validator.isValidInput("Redirect URL",referrer,"HTTPParameterValue",512,false);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我需要的是一个导致以下结果的函数:

http://www.google.com (ok)

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

或者是否足以称之为以下声明?

encoder.encodeForHTMLAttribute(referrer);
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏.

java security servlets httprequest esapi

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

HDIV和ESAPI之间的区别

我计划使用Spring MVC开发一个Web应用程序,并试图弄清楚哪个是最好的库来用于超过10个OWASP问题.我来看两个HDIV和ESAPI,任何人都可以帮我理解它们之间的区别.

谢谢您的帮助.

java spring-mvc esapi hdiv

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

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

我一直在使用ColdFusion 9附带的OWASP ESAPI实用程序.ColdFusion的Builtin Enterprise Security API.该encoder工具是非常直接的,我相信我有他们工作的罚款.我的问题在于validator公用事业.

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

这是具体的错误:

java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

使用此堆栈跟踪:

java.lang.NullPointerException at 
org.owasp.esapi.reference.DefaultValidator.getValidInput(DefaultValidator.java:238) at 
sun.reflect.GeneratedMethodAccessor377.invoke(Unknown Source) at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at 
java.lang.reflect.Method.invoke(Unknown Source) at 
coldfusion.runtime.StructBean.invoke(StructBean.java:536) at 
coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2393) at 
cftest2ecfm989071068.runPage(D:\Web\internet\fboc\test.cfm:19) at 
coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231) at 
coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416) at 
coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2722) at 
cfApplication2ecfc1705903666$funcONREQUEST.runFunction(D:\Web\internet\fboc\Application.cfc:70) at 
coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at 
coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405) at 
coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368) at 
coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55) at 
coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321) at 
coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220) at 
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491) at 
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337) at 
coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:88) at 
coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:280) at 
coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:356) at 
coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) at 
coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) …
Run Code Online (Sandbox Code Playgroud)

coldfusion coldfusion-9 esapi cfml

3
推荐指数
1
解决办法
8114
查看次数

Java Jersey REST请求参数卫生

我正在努力确保我的泽西请求参数被清理.

处理Jersey GET请求时,是否需要过滤非String类型?
例如,如果提交的参数是一个整数,则选项1(getIntData)和选项2(getStringData)黑客都安全吗?那么JSON PUT请求,我的ESAPI实现是否足够,或者我需要在映射后验证每个数据参数?它可以在映射之前进行验证吗?

泽西休息示例类:

public class RestExample {

//Option 1 Submit data as an Integer
//Jersey throws an internal server error if the type is not Integer
//Is that a valid way to validate the data?

//Integer Data, not filtered
@Path("/data/int/{data}/")
@GET
@Produces(MediaType.TEXT_HTML)
public Response getIntData(@PathParam("data") Integer data){
    return Response.ok("You entered:" + data).build();  
}

//Option 2 Submit data as a String, then validate it and cast it to an Integer

//String Data, filtered
@Path("/data/string/{data}/")
@GET
@Produces(MediaType.TEXT_HTML)
public Response …
Run Code Online (Sandbox Code Playgroud)

java rest json jersey esapi

3
推荐指数
1
解决办法
3296
查看次数

用于XSS预防的ESAPI不起作用

我正在我们的代码中主要在JSPS中修复跨站点脚本问题.

以下是原始代码

 //scriplet code
    <% String userId = request.getParameter("sid"); 
    ...%>
Run Code Online (Sandbox Code Playgroud)

他们拥有相同的Jsp

     <input type = hidden name = "userID" value = "<%= userId %>" />
Run Code Online (Sandbox Code Playgroud)

我已经进行了更改,在lib和ESAPI.properties中包含esapi-2.1.0.jar,在classpath中包含validation.properties.然后在下面更改scriplet代码以修复上面的代码

      //scriplet code
    <% String userId = ESAPI.encoder().encodeForHTML(request.getParameter("sid")); 
    ...%>
Run Code Online (Sandbox Code Playgroud)

我认为这可以解决问题但是当我使用Fortify扫描我的代码时,这些行再次突出显示为有XSS问题.如果你们对如何处理这个问题有任何想法,请帮忙.谢谢.

-------更新

非常感谢@avgvstvs.这是非常有见地的.Follwd指导方针,不确定我是不是很想念.代码 -

          String              userSID=ESAPI.encoder().encodeForHTMLAttribute(request.getHeader("janus_sid")); session.setAttribute("username",userSID);<input type=hidden name="USERNAME" value="<%= userSID %>"
Run Code Online (Sandbox Code Playgroud)

对于另一个varibale调试,下面是用法

       String debugFlag =  ESAPI.encoder().encodeForJavaScript(request.getParameter("debug"));var debugFlag = "<%= debugFlag%>";if(debugFlag == "y"){       
        document.title=   title + " (" + host + ")";
        defaultAppTitle = title + " (" + host +  ")";           
    }                                                           
Run Code Online (Sandbox Code Playgroud)

最新的Fortify扫描仍然将它们列为漏洞:-(

java xss cross-site esapi fortify

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

ESAPI - 使用禁止的依赖项获取NoClassDefFoundError(LoggerFactory)

我使用 ESAPI编码字符串值来解决跨站点脚本问题,如下所示(代码片段).

String encodedString = ESAPI.encoder().encodeForHTML(value);
Run Code Online (Sandbox Code Playgroud)

异常跟踪

org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException Encoder class (org.owasp.esapi.reference.DefaultEncoder) CTOR threw exception.
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129)
    at org.owasp.esapi.ESAPI.encoder(ESAPI.java:99)
<bold>Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/spi/LoggerFactory</bold>
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:74)
    at org.owasp.esapi.ESAPI.logFactory(ESAPI.java:137)
    at org.owasp.esapi.ESAPI.getLogger(ESAPI.java:154)
    at org.owasp.esapi.reference.DefaultEncoder.<init>(DefaultEncoder.java:75)
    at org.owasp.esapi.reference.DefaultEncoder.getInstance(DefaultEncoder.java:59)
    ... 71 more
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.spi.LoggerFactory
    at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
Run Code Online (Sandbox Code Playgroud)

Maven存储库pom.xml

<dependency>
    <groupId>org.owasp.esapi</groupId>
    <artifactId>esapi</artifactId>
    <version>${org.owasp.esapi.version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
        </exclusion>
        <exclusion>
            <groupId>xercesImpl</groupId>
            <artifactId>xercesImpl</artifactId>
        </exclusion>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
        <exclusion> …
Run Code Online (Sandbox Code Playgroud)

java dependencies maven esapi

3
推荐指数
3
解决办法
3895
查看次数

ESAPI.properties 中的最低要求属性

我的 Web 应用程序仅使用以下 ESAPI 编码方法:

  • ESAPI.encoder().encodeForLDAP()
  • ESAPI.encoder().encodeForHTML()

在这种情况下,ESAPI.properties 中最少需要的属性是什么?

现在我正在使用 ESAPI 2.1.0.1 和这个属性

java esapi

3
推荐指数
1
解决办法
4508
查看次数

ColdFusion 通过 Java 执行 OWASP esapi

我有一些旧的 ColdFusion 代码。它最初是为 CF9 编写的,但现在在 CF 2016 上运行。

应用程序.cfc

  local.esapi = createObject("java", "org.owasp.esapi.ESAPI");
  application.esapiEncoder = local.esapi.encoder()
Run Code Online (Sandbox Code Playgroud)

很久以后

常规页面

  form.Reason = application.esapiEncoder.encodeForHtml(form.Reason);
Run Code Online (Sandbox Code Playgroud)

我正在考虑用

  form.Reason = encodeForHTML(form.Reason);
Run Code Online (Sandbox Code Playgroud)

这些功能一样吗?

coldfusion owasp esapi coldfusion-2016

3
推荐指数
1
解决办法
223
查看次数

在WildFly中重新部署ESAPI应用程序时,ClassCastException Log4JLogger无法转换为Logger

我在部署到WildFly.8.2.0.Final的WAR文件中使用ESAPI时遇到类奇怪的类加载问题。这是我得到的错误:

09:35:47,383 ERROR [stderr] (default task-12) Caused by: java.lang.reflect.InvocationTargetException
09:35:47,383 ERROR [stderr] (default task-12)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
09:35:47,383 ERROR [stderr] (default task-12)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
09:35:47,383 ERROR [stderr] (default task-12)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
09:35:47,383 ERROR [stderr] (default task-12)   at java.lang.reflect.Method.invoke(Method.java:606)
09:35:47,383 ERROR [stderr] (default task-12)   at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:86)
09:35:47,383 ERROR [stderr] (default task-12)   ... 111 more
09:35:47,383 ERROR [stderr] (default task-12) Caused by: java.lang.ClassCastException: org.owasp.esapi.reference.Log4JLogger cannot be cast to org.owasp.esapi.Logger
09:35:47,383 ERROR [stderr] (default task-12)   at org.owasp.esapi.reference.Log4JLogFactory.getLogger(Log4JLogFactory.java:88)
09:35:47,383 ERROR [stderr] (default task-12)   at …
Run Code Online (Sandbox Code Playgroud)

java maven esapi

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