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@alet('1')"3dd#@@#@$<><

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

你可能感兴趣的:(lua,html,转义字符)