【问题标题】:javascript single double quote problemjavascript单双引号问题
【发布时间】:2011-01-03 17:13:54
【问题描述】:

在与处理单引号和特殊字符的数据库交互时,我遇到了这个相当经典的问题。在 PHP 中,我用另一个单引号和正则表达式语法字符用 preg_quote 转义单引号,它们作为专业人士工作。问题在于 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 变量,它在 firebug 控制台中给我一个错误,即左侧分配无效。第一个问题是,是否有像 eval 这样的函数或者默认情况下可以处理这些单双引号的函数? 第二个问题是,这些类型的事情是在整个应用程序中完成的。回顾每个 javascript 行并处理单引号和双引号将是一项艰巨的任务。有没有像全局这样的东西可以解决这个问题。

我的问题可能听起来很愚蠢,但我用谷歌搜索,找不到任何东西,希望有人能找到解决方案。

谢谢,

【问题讨论】:

  • 很抱歉造成混淆。不,我不是在 javascript 中构建 SQL,这也不是正则表达式。这是一个包含许多特殊字符的测试区域名称,只是为了看看它在哪里分解,所有这些字符在进入之前都会被转义但是 ^*&new''region' blah£" 是一个区域名称,并且在构建这个 javascript , reg_name 变量具有 db 中存在的区域名称的值。这就是为什么 reg_name=^*&new''region' blah£"。我可以在 fetch 上再次使用 PHPs 函数来转义 javascript 的特殊字符,但使用相同的变量来显示输入框中的数据。那些也会得到\'。

标签: javascript database double quotes


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您应该能够简单地转义引号:

      var quotes = "\"Quoted String\""
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-24
        相关资源
        最近更新 更多