Database 通过HTTP对数据库的自由形式查询

Database 通过HTTP对数据库的自由形式查询,database,hibernate,rest,jpa,Database,Hibernate,Rest,Jpa,我正在为一些数据库表提供REST接口。 我想为客户机提供一种以动态方式获取数据的方法。 e、 g /客户/1234?活跃=真实&性别=M&wealth>100000& 因此,我们的想法是让查询字符串尽可能自由。 对于数据库访问,我将收集所有查询参数,并将它们附加到SQLWHERE子句中,然后返回响应 我不确定这里是否有一个关于安全性的关键问题我可能遗漏了 这是个好主意吗?如果是的话,你知道这样一个实现,你能告诉我吗 我不确定这里是否有我可能遗漏的关键问题 可能是关于安全问题 一个关键问题是防止f

我正在为一些数据库表提供REST接口。 我想为客户机提供一种以动态方式获取数据的方法。 e、 g

/客户/1234?活跃=真实&性别=M&wealth>100000&

因此,我们的想法是让查询字符串尽可能自由。 对于数据库访问,我将收集所有查询参数,并将它们附加到SQLWHERE子句中,然后返回响应

我不确定这里是否有一个关于安全性的关键问题我可能遗漏了

这是个好主意吗?如果是的话,你知道这样一个实现,你能告诉我吗

我不确定这里是否有我可能遗漏的关键问题 可能是关于安全问题


一个关键问题是防止ffromsql注入。简短阅读。

好主意与否完全取决于数据库保存的信息类型。用户帐户:否/比萨店:是

您可以在php中执行以下操作:

Foreach ($_GET as $key => $value) {
$clauses[] = $key.' = "'.$value.'"';
}

$query = mysql_query('select * from pizza_parlors where '.explode(' and ',$clauses);

但我会用批准的搜索参数制作一个数组,以限制任何注入方法。

听起来确实像是一个安全漏洞——几乎意味着用户可以篡改url来更改SQL?当然,向控制器提交一个带有这些参数的html表单就足够了。这里JPA的相关性是什么?既然你把它贴上了那样的标签。DataNucleus提供了一个REST接口,可在后台连接到DB,并允许进行一些查询