Class JstlExpressionWhiteLister

  • All Implemented Interfaces:
    TaintFrameAdditionalVisitor, edu.umd.cs.findbugs.Detector, edu.umd.cs.findbugs.Priorities

    public class JstlExpressionWhiteLister
    extends BasicInjectionDetector
    implements TaintFrameAdditionalVisitor
    This detector will set the return value of PageContextImpl.proprietaryEvaluate as safe for XSS is some very specific case. Because the most common false positive are similar, can use a whitelist of expression to ignored. Here are some patterns that, we considered safe: ${e:forHtmlContent(param.test_param)} OWASP Java Encoder being used ${e:forHtmlContent(someVariable1)} ${pageContext.request.contextPath} Not to be confused with the pathInfo. This information is not coming from the client. With Tomcat 5.5, their seems to be a different API with a 5th parameter (boolean). Ref Additional safe regular expression patterns can be added by specifying a file in the system property "findsecbugs.jstlsafe.customregexfile".
    • Constructor Detail

      • JstlExpressionWhiteLister

        public JstlExpressionWhiteLister​(edu.umd.cs.findbugs.BugReporter bugReporter)
    • Method Detail

      • visitInvoke

        public void visitInvoke​(org.apache.bcel.generic.InvokeInstruction invoke,
                                org.apache.bcel.generic.MethodGen methodGen,
                                TaintFrame frameType,
                                List<Taint> parameters,
                                org.apache.bcel.generic.ConstantPoolGen cpg)
                         throws edu.umd.cs.findbugs.ba.DataflowAnalysisException
        Description copied from interface: TaintFrameAdditionalVisitor
        This method will be triggered for every method invocation (static, interface, special and virtual). The constant pool allowed the resolution of method name, field name, constant strings, etc. The taintframe
        Specified by:
        visitInvoke in interface TaintFrameAdditionalVisitor
        methodGen - Method
        frameType - Frame representation after the invoke (results)
        parameters - Stack representation just before the invoke
        Throws:
        edu.umd.cs.findbugs.ba.DataflowAnalysisException
      • visitLoad

        public void visitLoad​(org.apache.bcel.generic.LoadInstruction load,
                              org.apache.bcel.generic.MethodGen methodGen,
                              TaintFrame frameType,
                              int numProduced,
                              org.apache.bcel.generic.ConstantPoolGen cpg)
        Specified by:
        visitLoad in interface TaintFrameAdditionalVisitor
      • visitReturn

        public void visitReturn​(org.apache.bcel.generic.MethodGen methodGen,
                                Taint returnValue,
                                org.apache.bcel.generic.ConstantPoolGen cpg)
                         throws Exception
        Specified by:
        visitReturn in interface TaintFrameAdditionalVisitor
        Parameters:
        methodGen - Method
        returnValue - State of the returned value.
        Throws:
        Exception