2010-01-11 103 views
0

与处理单引号和特殊字符的数据库交互时,我有这个相当经典的问题。在PHP中,我使用另一个单引号和带有preg_quote的正则表达式语法字符来转义单引号,并且它们正在作为专业人员使用。问题出在javascript上,在我的脚本中有一些点,我直接在运行时将数据库变量传递给javascript来构建它,这就是它分手的地方。javascript单双引号问题

下面是一个例子:

var href = "region_view.php?min_row=1&max_row=25&reg_name=^*&new''region' blah£"&order_by=reg_name asc"; 

注意reg_name变量,这是给我的萤火控制台无效转让左侧的错误。第一个问题是,有没有像eval或类似的东西可以默认处理这些单引号的函数?第二个问题是,这些类型的东西都是在应用程序中完成的。回头看看每一条javascript线,照顾单引号和双引号是一件很难的事情。是否有像全球可以解决这个问题。

我的问题可能听起来很愚蠢,但我搜索了一下,找不到任何东西,如果有人能够为它提供一个解决方案,希望来到这里。

感谢,

+0

对不起,感到困惑。不,我不是在javascript中构建SQL,这是正则表达式。这是一个包含许多特殊字符的测试区域名称,只是为了查看它在哪里分手,所有这些字符在进入之前都会被转义,但^ *&new''region'blah£“是一个区域名称,同时将此javascript ,reg_name变量的值存在于db中,因此reg_name =^*&new''region'blah£“。我可以在抓取时再次使用PHP函数来转义javascript的特殊字符,但使用相同的变量来显示输入框中的数据。那些也会得到'。 – 2010-01-11 11:16:16

回答

1

你应该能够简单地逃脱报价:

var quotes = "\"Quoted String\"" 

另一件事:如果我看到正确的,你传递一个正则表达式通过参数字符串。我不知道有什么具体的漏洞,但是我的直觉告诉我这是一个潜在的安全漏洞,应该避免。

0

在你的字符串上调用php函数addslashes()。

3

从不在JavaScript中构建SQL。始终将纯数值发送到服务器,并让它正确地转义它们,然后构建SQL。否则,黑客或脚本小孩会破坏您的网站。请注意,网络中有自动化脚本,它们会搜索这些漏洞,并通过单击鼠标来破解您的网站。