在处理单引号和特殊字符的数据库时,我遇到了这个相当经典的问题。在PHP中,我使用preg_quote用另一个单引号和正则表达式语法字符转义单引号,并且它们作为专业人员工作。问题在于javascript,在我的脚本中有一些点,我直接将运行时的数据库变量传递给javascript来构建它,这就是它崩溃的地方。
以下是一个例子:
var href = "region_view.php?min_row=1&max_row=25®_name=^*&new''region' blah£"&order_by=reg_name asc";
请注意reg_name变量,它在firebug控制台中给出了一个错误,即左侧无效的赋值。第一个问题是,是否有任何函数,如eval或默认情况下可以处理这些单引号的东西? 第二个问题是,这些类型的东西都是在应用程序中完成的。回顾每个javascript行并处理单引号和双引号将是一项艰巨的任务。是否有类似全球的东西可以解决这个问题。
我的问题可能听起来很愚蠢,但是我用谷歌搜索,找不到任何东西,如果有人可以为它提供解决方案,就来到这里。
谢谢,
答案 0 :(得分:3)
从不在JavaScript中构建SQL。始终将纯值发送到服务器并让它正确地转义它们然后构建SQL。否则,黑客或脚本小子将破坏您的网站。请注意,网络上有自动脚本,只需单击鼠标即可搜索此类漏洞并破解您的网站。
答案 1 :(得分:1)
你应该能够简单地逃避引号:
var quotes = "\"Quoted String\""
另一件事:如果我看得正确,你通过参数字符串传递一个正则表达式。我不知道任何具体的漏洞,但我的直觉告诉我这是一个潜在的安全漏洞,应该避免。
答案 2 :(得分:0)
在你的字符串上调用php函数addslashes()。