首页 > 解决方案 > 如何解码 \u{61}lert 以使用 Perl 发出警报

问题描述

为了防止 XSS,我使用白名单来阻止选定的字符串。我的 Perl 脚本阻止了“alert”,但我发现它没有阻止“\U{61}lert”。我希望在验证所有字符串之前对其进行解码,因此我尝试了多种方法将 '\U{61}lert' 转换为 'alert' 但找不到使用 Perl 的方法(我能够转换其他格式,例如\U62lert 但不带括号)。

这种使用括号的格式是什么?有没有一种简单安全的方法来做到这一点?(例如,使用模块“编码”)。

目前我不想处理其他 XSS 验证方法,因为它们需要深入的更改/测试,而我需要快速的解决方案(至少现在是这样)。

提前致谢!麦克风

标签: perlunicodeencodingxss

解决方案


反斜杠和花括号需要反斜杠。用于/e将替换解释为代码:

echo '\u{61}lert' | perl -pe 's/\\u\{([0-9]+)\}/chr hex $1/ge'
alert

推荐阅读