当前位置: 首页 > 知识库问答 >
问题:

Override ESAPI OWASP 方法 java

徐绪
2023-03-14

我正在尝试通过使用 ESAPI 覆盖()来覆盖 ESAPI OWASP 库中的现有方法。不知何故它不起作用,你知道为什么吗?

这是我的代码:

public class AntiSamyDOMScannerExpansion extends AbstractAntiSamyScanner {

//...
public CleanResults scan(String html, String inputEncoding, String outputEncoding) throws ScanException {
        ESAPI.override(new DefaultSecurityConfiguration());
//...

共有1个答案

公良育
2023-03-14

ESAPI.override()仅用于覆盖配置。为了扩展其他类型的方法,在我的例子中是AntiSamy.scan,需要扩展调用结构中的每个类。
这是因为实现不灵活。例如,我们在HTMLValidationRule.java中发现:

private String invokeAntiSamy( String context, String input ) throws ValidationException {
        // CHECKME should this allow empty Strings? "   " us IsBlank instead?
        if ( StringUtilities.isEmpty(input) ) {
            if (allowNull) {
                return null;
            }
            throw new ValidationException( context + " is required", "AntiSamy validation error: context=" + context + ", input=" + input, context );
        }

        String canonical = super.getValid( context, input );

        try {
            AntiSamy as = new AntiSamy();
            CleanResults test = as.scan(canonical, antiSamyPolicy);

            List<String> errors = test.getErrorMessages();
            if ( !errors.isEmpty() ) {
                LOGGER.info( Logger.SECURITY_FAILURE, "Cleaned up invalid HTML input: " + errors );
            }

            return test.getCleanHTML().trim();

        } catch (ScanException e) {
            throw new ValidationException( context + ": Invalid HTML input", "Invalid HTML input: context=" + context + " error=" + e.getMessage(), e, context );
        } catch (PolicyException e) {
            throw new ValidationException( context + ": Invalid HTML input", "Invalid HTML input does not follow rules in antisamy-esapi.xml: context=" + context + " error=" + e.getMessage(), e, context );
        }
    }

由于AntiSamy as=new AntiSamy()我们无法使其在自定义实现中可用。

 类似资料:
  • 例如,我如何做到这一点? 和 像这样的东西,我试着在网上搜索,但我找不到任何关于这方面的教程,所以我在这里问。

  • 问题内容: 是否 删除 (对象实体)的方法 EntityManager的 工作只对这些对象从得到 的发现 ()方法? 我有以下代码片段: 但这不是从数据库中删除特定条目。 当我尝试以下内容时: 一切正常。 问题答案: 引用ObjectDB的有关删除JPA实体对象的手册: 为了从数据库中删除对象,必须首先检索该对象(无论采用哪种方式),然后在活动事务中,可以使用remove方法将其删除。 如果参数不

  • 本文向大家介绍Javaclone()方法,包括了Javaclone()方法的使用技巧和注意事项,需要的朋友参考一下 示例 该clone()方法用于创建和返回对象的副本。应避免使用这种有争议的方法,因为它存在问题,应使用复制构造函数或其他复制方法来代替clone()。 为了使用该方法,所有调用该方法的类都必须实现该Cloneable接口。 该Cloneable接口本身只是用来改变行为的标签接口nat

  • 本小节我们将学习什么是方法、如何自定义方法,并按照分类介绍每种方法的特点,对于有参数的方法传值,会讲到基本数据类型作为方法参数和引用数据类型作为方法参数的区别。也会学习可变参数方法的定义语法和使用场景,方法重载的使用和意义也是本节的重点学习内容。 1. 什么是方法 在前面我们已经了解过方法的概念,Java 程序的入口 main() 就是一个方法。System.out.println(); 语句中

  • 问题内容: 我刚刚开始使用Java进行编程。在讨论方法和构造函数时,我们缺少使用的文字。我不确定到底是什么方法或构造函数以及什么使每个方法唯一。有人可以帮我定义它们并区分两者吗? 问题答案: 构造函数与方法之间的重要区别在于,构造函数初始化使用运算符创建的对象,而方法对已存在的对象执行操作。 构造函数不能直接调用。当关键字创建对象时,将隐式调用它们。可以直接在已使用创建的对象上调用方法。 构造函数

  • 我对Java中泛型的概念不熟悉。我有一个泛型方法,它的返回类型也是泛型。 我收到此错误,< code >无法解析T中的方法“getAa”。两个类都有这个成员变量,但是java并不理解,因为sub方法返回的是这个对象的一般列表。有没有办法改掉这个错误? 下面是我的代码,

  • 问题内容: 我们有一个给定的REST接口: 可以根据服务器配置,通过不同的逻辑“计算器”来实现此计算。 现在,我们正在设计每个计算器必须实现的Java接口。该接口将为每个REST服务提供一个方法。 鉴于所有REST(和HTTP)调用都是无状态的,因此每个方法都应该是静态的。但是,您不能在Java接口中定义静态方法。有没有针对这种情况的好的解决方法? 我们可以将这些方法定义为非静态方法,然后仅创建一

  • 只是想知道为什么 调用world\u开关: 结果没有任何变化,我想增加或减少实例变量@pos\u X或@pos\u Y 这是我的初始化方法 这就是我如何创建类的实例 我们将不胜感激