“转义”是指在标记语言、编程语言或脚本语言中,将具有特殊含义的字符或符号转换为可安全处理的替代字符串的过程。

例如,在HTML中,字符<和>专用于描述标签。如果这些字符直接出现在HTML中,Web浏览器会将其解释为标记,而不是纯文本。因此,要将这些符号显示为纯文本,必须将其写成转义序列,例如用&lt;表示<,用&gt;表示>。浏览器遇到这些转义序列时,会将其直观呈现为原始字符(<和>)。这一转换过程称为“转义”。

在Web安全领域,转义尤为重要。它是“净化”处理的关键环节,旨在安全处理用户通过Web表单提交的输入。

例如,假设某个Web应用程序从表单中获取用户输入,并直接将其显示在后续页面上。假设用户提交了以下输入:


<script>alert("Hello!");</script>


如果Web应用程序未经转义就将此字符串直接包含在生成的页面中,浏览器会将其解释为JavaScript代码并执行。因此,页面会弹出一个显示“Hello!”的警告框,而这并非网站创建者或管理员的本意。虽然这个简单的脚本可能不会造成严重危害,但第三方用户能够在网页中任意嵌入脚本是一个严重问题,可能使网站面临跨站脚本(XSS)攻击及其他安全威胁。

为防止这种情况,Web应用程序在呈现此类数据之前,应正确转义特殊字符。将<和>分别替换为对应的转义序列(&lt;和&gt;)后,恶意脚本将以无害字符串的形式呈现:


&lt;script&gt;alert("Hello!");&lt;/script&gt;


采用这种形式后,浏览器会将其严格视为文本,从而使所有脚本失效并按预期显示,避免触发意外行为。

大多数现代Web应用开发语言和框架都内置了适当转义字符串的函数。然而,在复杂的Web应用中,验证每项输入是否均已正确转义,并识别和修正存在问题的元素,可能需要投入大量时间和精力。解决这一问题的一种有效方法是使用Web应用防火墙(WAF),确保用户提交的输入在到达Web应用之前已完成转义。

F5通过F5 BIG-IP解决方案提供WAF功能。