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

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 ,不会有类似的性能损失。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值