Java代码审计需要关注的函数
总结了一下函数,帮助定位功能
XXE
XML Parsing(解析)
XMLReaderFactory:提供创建XMLReader对象的工厂方法。XMLReader是SAX(Simple API for XML)的接口,用于读取和解析XML文件。createXMLReader:XMLReaderFactory中的方法,用于生成XMLReader实例。SAXBuilder:org.jdom.input.SAXBuilder和org.jdom2.input.SAXBuilder:JDOM库中的类,用于基于SAX(Simple API for XML)构建XML文档树。用于读取XML并将其转化为JDOM的文档模型。SAXReader:属于dom4j库,使用SAX解析器读取XML文档并生成Document对象。SAXParserFactory:JAXP(Java API for XML Processing)中的工厂类,用于生成SAXParser的实例。newSAXParser:SAXParserFactory中的方法,用于创建SAXParser实例。SAXParser:SAX解析器类,使用事件驱动的方式处理XML文档。XMLReader:SAX的接口,用于逐行读取XML并触发事件。DocumentHelper:dom4j库中的工具类,提供创建和处理dom4j文档的便捷方法。XMLStreamReader:基于StAX(Streaming API for XML)的接口,提供基于游标的解析方法,适用于流式处理XML。javax.xml.stream.XMLStreamReader:XMLStreamReader的标准Java接口,用于StAX解析。SAXSource:JAXP类,使用SAX解析器作为输入源,通常用于转换操作。
XML Building & Manipulation(XML构建与操作)
DocumentBuilderFactory:JAXP的工厂类,用于创建DocumentBuilder实例,适用于DOM(Document Object Model)解析。DocumentBuilder:DOM解析器类,用于解析XML并生成DOM树结构。javax.xml.parsers.DocumentBuilder:JAXP的标准接口,提供DOM文档解析功能。javax.xml.parsers.DocumentBuilderFactory:JAXP的标准工厂类,用于生成DocumentBuilder实例。org.dom4j.DocumentHelper:提供操作dom4j文档的便捷方法,如创建文档或元素。oracle.xml.parser.v2.XMLParser:Oracle XML解析库中的类,用于解析XML文档。org.jdom.output.XMLOutputter:JDOM类,用于将JDOM文档输出为XML格式的字符串或文件。java.beans.XMLDecoder:用于将XML编码的数据解码为Java对象。
XML Transformation & Validation(XML转换与验证)
TransformerFactory:JAXP的工厂类,用于创建Transformer实例,用于XML文档转换(如从XML转换为HTML或其他格式)。SAXTransformerFactory:TransformerFactory的子类,提供基于SAX事件的转换能力。javax.xml.transform.TransformerFactory:JAXP的标准工厂接口,用于创建转换器(Transformer)。javax.xml.transform.sax.SAXTransformerFactory:SAX事件驱动的转换工厂接口。SchemaFactory:JAXP的工厂类,用于创建模式验证器(Schema validator)。Validator:SchemaFactory的实例,用于基于XML模式(Schema)验证XML文档。
XML Binding & XPath(XML绑定与XPath)
Unmarshaller:JAXB(Java Architecture for XML Binding)中的类,用于将XML数据绑定到Java对象。javax.xml.bind.Unmarshaller:JAXB标准接口,用于XML到Java对象的解组(unmarshal)。XPathExpression:JAXP中的接口,表示已编译的XPath表达式,用于在XML文档中查询数据。javax.xml.xpath.XPathExpression:JAXP标准接口,用于表示并评估XPath表达式。
StAX(Streaming API for XML)
javax.xml.stream.XMLInputFactory:JAXP的StAX工厂类,用于创建XMLStreamReader或XMLStreamWriter实例,用于流式处理XML。org.dom4j.io.SAXReader:dom4j库中的类,基于SAX解析XML文档。
文件操作
java.io.File是 Java 中用于处理文件和目录的核心类,提供了文件操作(如创建、删除、检查文件状态等)。FileUpload:处理文件上传的核心类,用于解析上传请求。FileUploadBase:Apache Commons FileUpload 的基类,定义了上传过程中通用的行为FileItemIteratorImpl和FileItemStreamImpl:用于处理文件上传时的迭代器模式,这些实现类可以逐步获取文件流和其他表单字段。FileUtils是 Apache Commons IO 库中的工具类,提供了简化文件操作的常用方法。FileOutputStream是用于将数据写入文件的输出流。它可以以字节流的形式将数据写入文件。UploadHandleServlet:自定义的上传处理 Servlet,一般用来接收来自客户端的上传请求,并调用相应的库(如 Apache Commons FileUpload)来处理文件。FileLoadServlet:处理文件加载或下载的 Servlet,用于从服务器发送文件给客户端。DiskFileItemFactory是 Apache Commons FileUpload 提供的工厂类,用于在处理文件上传时创建FileItem对象。这些对象表示表单的字段或文件。MultipartRequestEntity:用于创建和管理 multipart HTTP 请求体,通常与文件上传有关,特别是在处理复杂表单时(包含文本字段和文件的上传)。MultipartFile:通常出现在 Spring Framework 中,表示上传的文件。可以通过getBytes()或transferTo()方法获取文件内容或保存文件。com.oreilly.servlet.MultipartRequest处理基于 multipart/form-data 的文件上传。它是一个较老的库,在处理文件上传时用法比较简单,但不如 Apache Commons FileUpload 或 Spring 的文件上传工具灵活。MultipartFile(Spring):用于处理上传的文件对象,Spring MVC 中用于文件上传操作。MultipartRequestEntity:表示 multipart HTTP 请求的实体,通常与上传和下载功能相关。com.oreilly.servlet.MultipartRequestO’Reilly 提供的一个用于处理文件上传的库(早期的常用库),不过现在通常使用 Apache Commons FileUpload 或 Spring 来处理文件上传。Scanner是 Java 中的实用类,用于从文件或输入流中读取内容。sun.nio.ch.FileChannelImpl``FileChannelImpl是 Java NIO 中用于文件读写的底层实现类,通过FileChannel进行高效的文件 IO 操作。java.io.FileInputStream用于从文件中读取数据的输入流,通常与FileOutputStream一起使用。- java.io.File.list()
和listFiles():list():返回一个包含目录中文件和子目录名称的字符串数组。listFiles():返回目录下的文件和目录的File对象数组。 java.io.RandomAccessFile支持随机访问文件内容,允许同时读写文件的任意部分- sun.nio.fs
AsynchronousFileChannelNIO 2 的异步文件通道,支持异步的文件读取和写入操作,适用于高性能 IO 应用。BufferedReader是 Java 中用于读取字符输入流的类,通常用于从文件中逐行读取数据。ReadAllBytes()NIO 提供的Files.readAllBytes()方法,可以将文件内容读取为字节数组,适用于小文件读取。FileSystem和FileSystemProvider是 Java NIO 提供的抽象层,用于跨平台的文件系统操作。
SQL
createStatement() :创建一个 Statement 对象,之后可使用 executeQuery() 方法执行SQL语句。executeQuery() :执行指定的 SQL 语句,返回单个 ResultSet 对象PreparedStatement对SQL语句进行预编译order by、in、like:不能使用 PreparedStatement 预编译