Notes Site.
post @ 2024-09-25

当 XML 数据未经适当清理或安全解析而从用户控制的输入中获取时,就会出现 XML External Entity (XXE) 漏洞。

XML

Extensible Markup Language (XML)是一种通用标记语言(类似于 HTML 和 SGML),旨在各种类型的应用程序中灵活地传输和存储数据和文档。

XML Document

XML 文档的基本示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>  
<email>
<date>01-01-2022</date>
<time>10:00 am UTC</time>
<sender>john@inlanefreight.com</sender>
<recipients>
<to>HR@inlanefreight.com</to>
<cc>
<to>billing@inlanefreight.com</to>
<to>payslips@inlanefreight.com</to>
</cc>
</recipients>
<body>
Hello,
Kindly share with me the invoice for the payment made on January 1, 2022.
Regards,
John
</body>
</email>

XML 文档的一些关键元素:

Key Definition Example
Tag XML 文档的键,通常用 ( <>) 字符括起来。 <date>
Entity XML 变量,通常用 ( &;) 字符括起来。 &lt;
Element 根元素或其任何子元素,其值存储在开始标记和结束标记之间。 <date>01-01-2022</date>
Attribute 存储在标签中的任何元素的可选规范,可供 XML 解析器使用。 version="1.0"/encoding="UTF-8"
Declaration 通常是 XML 文档的第一行,定义解析时使用的 XML 版本和编码。 <?xml version="1.0" encoding="UTF-8"?>

XML Document Type Definition (DTD)

XML Document Type Definition (DTD) 允许根据预定义的文档结构验证 XML 文档。预定义的文档结构可以在文档本身或外部文件中定义。

Read More
post @ 2024-09-22

Obfuscation

Code Obfuscation

混淆是一种使脚本更难被人类阅读的技术,但从技术角度来看,它仍然能够正常工作,尽管性能可能会降低。这通常是通过使用混淆工具自动实现的,该工具将代码作为输入,并尝试根据代码的设计,以一种更难阅读的方式重写代码。

例如,代码混淆器通常会将代码转换成一个包含代码中使用的所有单词和符号的字典,然后在执行过程中尝试通过引用字典中的每个单词和符号来重建原始代码。以下是一个简单的 JavaScript 代码被混淆的示例:

image.png

Basic Obfuscation

Minifying JavaScript code

压缩 JavaScript 代码片段的可读性同时保持其全部功能的常用方法是 JavaScript 压缩。Code minification 意味着将整个代码放在一行(通常很长)中。

很多工具可以帮助我们压缩 JavaScript 代码,比如javascript-minifier。我们只需复制代码,然后点击Minify,即可在右侧看到压缩后的输出:

image.png

Read More
⬆︎TOP