我需要使用javascript修改该值,以使其可以作为SQL插入查询的一部分进行放置。
目前我有以下代码来处理单引号'字符。
value = value.replace(/'/g, "\\'");
此代码无问题。现在我注意到独立的反斜杠导致错误。
如何删除那些独立的反斜杠?
答案 0 :(得分:21)
现在我注意到独立的反斜杠导致了错误。
您正在操作的字符串中的反斜杠对替换'
字符无任何影响。如果您的目标是替换反斜杠字符,请使用:
value = value.replace(/\\/g, "whatever");
...将用“what”替换字符串中的所有反斜杠。请注意,我必须写两个反斜杠而不是一个。这是因为在regular expression literal中,反斜杠用于引入各种特殊字符和字符类,并且还用作转义 - 正则表达式文字中的两个反斜杠(如字符串中)表示单个实际反斜杠在字符串中。
要将单个反斜杠更改为两个反斜杠,请使用:
value = value.replace(/\\/g, "\\\\");
请注意,再次,要在替换字符串中获取文字反斜杠,我们必须转义两者中的每一个 - 在替换字符串中总共产生四个。
我需要使用javascript修改该值,以使其可以作为SQL插入查询的一部分。
您不想手动执行此操作。任何允许您进行数据库查询的技术(JDBC,ODBC等)都将提供某种形式的准备好的或参数化语句(link),它为您处理这些逃避问题。几乎可以保证在您的软件中留下可能被利用的安全漏洞。您希望使用必须考虑这一点的团队的工作,并在问题曝光时定期更新生成的代码,而不是单独飞行。此外,如果您的JavaScript在客户端上运行(大多数情况下,但绝不是全部 - 我一直在使用JavaScript服务器端),那么没有你要做的就是逃避字符串可以使它成为可能安全,因为客户端对服务器的请求可能是欺骗性的,完全绕过客户端代码。
答案 1 :(得分:3)
你应该使用某种数据库库提供的转义函数,滚动你自己只会造成麻烦。