Kat*_*ine 0 ruby mysql escaping gsub single-quotes
我有一个Ruby形式的字符串: "Henry's string"
每一个gsub和tr我试着让我形成像"Henry\\'s string","Henry\\\\'s string"等等.
这些都是逃避反斜杠,但留给我一个未转义的单引号.
我试过了:
"Henry's string".gsub("'","\\\\'") 有不同数量的\
"Henry's string".gsub(/'/) {|x| "\\\\#{x}"} 再次以不同的数量
"Henry's string".gsub(/'/) {|x| "\\#{x}"}.gsub(/\\/) {|x| "#{x}"}
我想我需要一个奇数\来完全逃脱'(为了加载到MySQL),但我无法弄清楚如何得到这个.
当插入数据库(如MySQL)时,使用带有占位符值的预准备语句非常重要.我把它放在粗体,因为理解它是非常重要的.所需要的只是一个小小的滑动,你已经创建了一个任何人都可以利用的SQL注入漏洞,这些漏洞可能非常具有破坏性.
转义字符串可能看起来很简单,但事实并非如此.有很多古怪的边缘情况你需要掩盖,其中的细节太复杂,不能在这里简短的回答.
简单的解决方案是根本不打扰转义,而是写下这种形式的查询:
INSERT INTO table_name (column_name) VALUES (?)
Run Code Online (Sandbox Code Playgroud)
其中?代表您要插入的数据.你可以使用这些,例如,像这样的mysql2驱动程序:
stmt = @client.prepare("INSERT INTO table_name (column_name) VALUES (?)")
stmt.execute("Henry's string")
Run Code Online (Sandbox Code Playgroud)
该驱动程序将负责正确编码值,因此您不必担心它.
您还可以使用Sequel或ActiveRecord之类的东西来进一步简化操作.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |