如何在 ruby 中将单引号替换为反斜杠?
How to replace single quote to backslash in ruby?
为了防止sql注入,我是这样做的:
string = "105;' DROP TABLE Suppliers"
new_string = string.gsub("'", %q(\'))
p new_string
=> "105; DROP TABLE Suppliers DROP TABLE Suppliers"
这里为什么输出DROP TABLE Suppliers
两次?
Ruby 将 \'
解释为对 post 匹配字符串 ($') 的反向引用。因此,您要用引号后的所有内容替换引号:
<space>DROP TABLE Suppliers
V
"105;' DROP TABLE Suppliers"
这是对预匹配变量($`)的反向引用:
string = "105;' DROP TABLE Suppliers"
new_string = string.gsub("'", %q(\`))
p new_string
--output:--
"105;105; DROP TABLE Suppliers"
我找不到任何关于 ruby 的全局变量的反向引用的文档,所以恭喜你是 ruby 的先驱。
好消息是您不必这样做。有关更深入的信息,请阅读下面的评论。要转义单引号,您可以添加另一个单引号。所以获胜者是:
string.gsub(/'/, "''")
为了防止sql注入,我是这样做的:
string = "105;' DROP TABLE Suppliers"
new_string = string.gsub("'", %q(\'))
p new_string
=> "105; DROP TABLE Suppliers DROP TABLE Suppliers"
这里为什么输出DROP TABLE Suppliers
两次?
Ruby 将 \'
解释为对 post 匹配字符串 ($') 的反向引用。因此,您要用引号后的所有内容替换引号:
<space>DROP TABLE Suppliers
V
"105;' DROP TABLE Suppliers"
这是对预匹配变量($`)的反向引用:
string = "105;' DROP TABLE Suppliers"
new_string = string.gsub("'", %q(\`))
p new_string
--output:--
"105;105; DROP TABLE Suppliers"
我找不到任何关于 ruby 的全局变量的反向引用的文档,所以恭喜你是 ruby 的先驱。
好消息是您不必这样做。有关更深入的信息,请阅读下面的评论。要转义单引号,您可以添加另一个单引号。所以获胜者是:
string.gsub(/'/, "''")