<div style="text-indent: 2em; font-size: larger;">

 在网站编程中,经常会让用户在页面的表单上输入一些内容,然后在后台获取这些输入并将其存储到数据库中去。

大多数情形下,接收的输入是文本。在后台的SQL语句中,我们将这些文本作为字符串值用单引号括起来。然而,如果用户的输入内容中含有单引号的话,就会使得SQL语句出错,导致程序不能正常将输入插入或者更新到数据库。

事实上,如果程序体系结构不够好,还会受到恶意者通过巧妙地输入单引号来进行SQL注入的攻击。所以凡是插入或者更新数据库中的表时,在将用户的输入传递给最终的SQL语句前,应该将单引号转换成不至于使程序出现意外的字符(或者简单地去掉它!)。

我觉得最好的方法就是,将用户输入的每个单引号转换成连续的两个单引号,如

input = Replace(input, "'", "''")

因为,在SQL中,使用连续两个单引号('')来表示字符串的单绰号,而避免了和特殊的保留字符的冲突。这样,就能够在最大程度上保持用户输入的原样,又能够不影响到程序的执行。