perl - 如何解码 \u{61}lert 以使用 Perl 发出警报
问题描述
为了防止 XSS,我使用白名单来阻止选定的字符串。我的 Perl 脚本阻止了“alert”,但我发现它没有阻止“\U{61}lert”。我希望在验证所有字符串之前对其进行解码,因此我尝试了多种方法将 '\U{61}lert' 转换为 'alert' 但找不到使用 Perl 的方法(我能够转换其他格式,例如\U62lert 但不带括号)。
这种使用括号的格式是什么?有没有一种简单安全的方法来做到这一点?(例如,使用模块“编码”)。
目前我不想处理其他 XSS 验证方法,因为它们需要深入的更改/测试,而我需要快速的解决方案(至少现在是这样)。
提前致谢!麦克风
解决方案
反斜杠和花括号需要反斜杠。用于/e
将替换解释为代码:
echo '\u{61}lert' | perl -pe 's/\\u\{([0-9]+)\}/chr hex $1/ge'
alert
推荐阅读
- javascript - 仅在单击按钮时打开 mat-expansion-panel
- java - Lucene,多词搜索,一个词必须完全匹配
- c++ - 将 C++/C 中的二维数组拆分为子数组
- apache-spark - parquet 文件名的哪些部分很重要?
- java - 如何自动将 JavaFX 中的 TableColumn 调整为 TableView 的大小?
- android - 如何在 Kotlin 中将 ArrayList 添加到 JsonObject
- c++ - 从旋转和位置获取前向向量
- java - 如何防止 JDialog 为空时显示?
- mysql - #1055 - SELECT 列表的表达式 #19 不在 GROUP BY 子句中,并且包含非聚合列
- typescript - 正确保护自定义 RxJS 可管道操作符