lua html 转义字符,lua htmlspecialchars html特殊代码转义 避免XSS攻击

这篇博客介绍了Lua中的htmlspecialchars函数,用于将特殊字符转换为HTML编码以防止XSS攻击。文中提到,虽然可以使用ngx_lua在Nginx层面进行更高效的过滤,但讨论了Lua正则表达式的局限性和性能损失。示例展示了如何使用htmlspecialchars函数处理字符串,并建议在可能的情况下,优先考虑Nginx的XSS过滤功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lua htmlspecialchars 转换特殊的字符为 HTML 编码。

格式: result = htmlspecialchars(字符串)

下列字符会被转换:

'&' (ampersand) 转换为 '&' '”' (double quote) 转换为 '"' ”'” (single quote) 转换为 ''' '' (greater than) 转换为 '>' '/' (greater than) 转换为 '/'

local function htmlspecialchars(s)

local HTML_ENTITIES = {

["&"] = "&",

["

[">"] = ">",

['"'] = """,

["'"] = "'",

["/"] = "/"

}

return string.gsub(s, "[\">/

end

示例:

local txt="2d@alet('1')\"3dd#@@#@$<>

s = htmlspecialchars(txt)

print(s)

执行结果:

2d@<wad312?script>alet('1')"</script>3dd#@@#@$<><

如果项目中可以直接使用nginx进行XSS过滤,建议直接使用。因为1. Lua 中正则表达式的性能并不如 Nginx 中的正则表达式优秀;2.Lua 中的正则表达式并不符合 POSIX 规范,而 Nginx 中实现的是标准的 POSIX 规范,后者明显更具备通用性。3.Lua 中的正则表达式与 Nginx 中的正则表达式相比,有 5%-15%的性能损失。4.实际编译执行过程效率低下。Lua 将表达式编译成 Pattern 之后,并不会将 Pattern 缓存,而是每此使用都重新编译一遍,潜在地降低了性能。Nginx 中的正则表达式可以通过参数缓存编译过后的 Pattern ,不会有类似的性能损失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值