我必须创建一个正则表达式来搜索整个文件,以找到与 Java XML 解析器的第一部分(但不是第二部分)的匹配项。这将用于防止某些 XXE 攻击。不幸的是,它Thực ra必须是单个正则表达式,并且它Thực ra需要搜索整个文件(而不是逐行)。
我正在搜索 java 文件以查找 DocumentBuilderFactory,并且我正在寻找初始化的变量随后KHÔNG通过下面的 setFeature 或 setEntity 运行的情况,或者查找变量所在的 SAXParserFactory < em>不运行下面的setFeature。
以下是我希望正则表达式失败的情况:
案例A(简单案例):
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
...
docBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
情况 B(多行):
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
.newInstance();
...
docBuilderFactory
.setExpandEntityReferences(false);
案例 C(使用 SAXParser 而不是 DocumentBuilder):
SAXParserFactory spf = SAXParserFactory.newInstance();
...
spf.setFeature("http://xml.org/sax/features/external-general-entities", false);
重申一下,我希望正则表达式能够查找 DocumentBuilderFactory 或 SAXParserFactory 后面没有 setFeature 或 setExpandEntity 的情况。
这是我到目前为止所拥有的(希望格式化是为了更好地理解):
DocumentBuilderFactory (\w+).*=.*DocumentBuilderFactory
[\n|\r]?.*?
\.
[\n|\r]?.*?
newInstance\(\)
(?>.|\n|\r)*
(\1[\n|\r]?.*?\.[\n|\r]?.*?setExpandEntityReferences\(false\)
|\1[\n|\r]?.*?\.[\n|\r]?.*?setFeature\("http://xml.org/sax/features/external-general-entities", false\)
|\1[\n|\r]?.*?\.[\n|\r]?.*?setFeature\("http://apache.org/xml/features/disallow-doctype-decl", false\)).*
|SAXParserFactory (\w+).*=.*SAXParserFactory
[\n|\r]?.*?
\.
[\n|\r]?.*?
newInstance\(\)
(?>.|\n|\r)*
(\1[\n|\r]?.*?\.[\n|\r]?.*?setFeature\("http://xml.org/sax/features/external-general-entities", false\)
|\1[\n|\r]?.*?\.[\n|\r]?.*?setFeature\("http://apache.org/xml/features/disallow-doctype-decl", false\)).*
我在制作这些 setFeatures 时遇到了困难,因此找不到它们,并且我很确定 setFeatures 根本没有被查看。
1 Câu trả lời
当您添加必须在单个全局正则表达式中执行此操作的限制时,这是一个棘手的问题,但只要您设置 .匹配换行符:
(?:DocumentBuilderFactory|SAXParserFactory)[\s\r\n]+?(\w+)[\s\r\n]*?=[\s\r\n]*?(?:DocumentBuilderFactory|SAXParserFactory)[\.\r\n]+newInstance(?!.*\1(?=[\.\r\n]+(:?setFeature|setExpandEntity)))
我能找到的唯一方法是将正前瞻放在负前瞻中,这可能不受某些引擎支持,并且运行速度相当慢。
关于java - 匹配完整文件正则表达式中的 A 部分,但不匹配 B 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17619521/
Tôi gặp một số vấn đề khi sử dụng io-ts. Tôi thấy nó thực sự thiếu tài liệu hướng dẫn và hầu hết tiến trình tôi đạt được đều thông qua các vấn đề trên GitHub. Không, tôi không hiểu HKT nên điều đó không giúp ích gì. Về cơ bản, tôi tạo một kiểu ở một nơi khác, ty
Tôi phải tạo một biểu thức chính quy để tìm kiếm toàn bộ tệp để tìm phần khớp với phần đầu tiên (nhưng không phải phần thứ hai) bằng trình phân tích cú pháp Java XML. Điều này sẽ được sử dụng để ngăn chặn một số cuộc tấn công XXE. Thật không may, nó phải là một biểu thức chính quy duy nhất và nó cần phải tìm kiếm
Tôi có một số nội dung đơn giản trong tệp Shared/_Header.cshtml. Shared/_Layout.cshtml của tôi chèn mã này bằng cách gọi @Html.Partial("_Header")
Tôi có câu lệnh if-else trong đó: Điều kiện 1: ID khớp và một số trường nhất định được tự động điền thông tin. Sau đó câu lệnh if chỉ điền vào các trường còn lại. Điều kiện 2: ID không khớp, tất cả các trường đều trống. Câu lệnh ELSE sẽ điền đầy đủ tất cả khi tôi đưa ra điều kiện
Tôi đang phát triển một trang web cuộn một trang. Tôi đang cố gắng triển khai ScrollMagic và ghim phần đầu tiên để phần còn lại của trang web cuộn lên đầu phần được ghim. Tôi đã thử tạo một jsfiddle để chỉ ra vấn đề nhưng có vẻ như tôi không thể tải jsfiddl