在javascript

时间:2015-08-21 01:38:14

标签: javascript json

我很难找到一种将用户输入的SQL(如搜索条件)发送到后端服务器的好方法。

我有一个基于Spring(java)的后端和Oracle DB的角度应用程序。后端服务器公开REST服务以接收此输入。

用户可以在文本区域中输入以下搜索字符串(用户可以获取帮助以创建此搜索字符串)。我的目标是将以下示例搜索条件发送到后端服务器。

'Customer Name' == 'John Doe' AND 'Customer ID' == 123 AND 'Department' == ('Engineering' OR 'Sales')

我能想到的一种方法是将此SQL文本字符串转换为JSON对象并将其发送到服务器。

在这种情况下,如何将带有操作数的字符串转换为JSON对象?我可以将上面的示例字符串转换为如下所示的JSON对象吗?

{
  "AND": {
    "operation1": "'Customer Name' == 'John Doe'",
    "operation2": "Customer ID' == 123",
    "operation3": {
      "OR":{
        "operation4":"'Department' == 'Engineering'",
        "operation5":"'Department' == 'Sales'"
      }
    }
  }
}

此对象的问题是,它看起来太具体到这种情况,并且服务器很难清理输入并将其转换回实际的查询字符串。

此外,我不能将此字符串发送到后端,因为会出现XSS或SQL注入问题。

有人建议将这些数据发送到后端吗?如果JSON方法是一种很好的方法,有没有更好的方法将上面的字符串转换为JSON对象?

1 个答案:

答案 0 :(得分:1)

将输入转换为URL查询字符串,就好像表单中包含字段"客户名称","客户ID"和"部门"。

您可能需要查看https://github.com/forward/sql-parser