Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接受客户端SQL可以吗?如果是,如何验证?_Sql_Mongodb_Postgresql_Sql Injection - Fatal编程技术网

接受客户端SQL可以吗?如果是,如何验证?

接受客户端SQL可以吗?如果是,如何验证?,sql,mongodb,postgresql,sql-injection,Sql,Mongodb,Postgresql,Sql Injection,我有一个应用程序,其中我希望从前端查询生成器()接受用户提供的SQL查询。该查询最终需要在postgres数据库中运行,以返回数据的子集 上面链接的查询生成器可以导出SQL或mongo查询。我认为使用mongo查询是相对安全的,因为我可以简单地在服务器上添加: query.owner_of_document = userId 限制结果(用户拥有的文档) 然而,如果有人试图存储恶意SQL字符串以供执行,则SQL语句可能在注入攻击中被劫持 直接从客户机接受SQL是一种不好的做法吗?如何确保提供的S

我有一个应用程序,其中我希望从前端查询生成器()接受用户提供的SQL查询。该查询最终需要在postgres数据库中运行,以返回数据的子集

上面链接的查询生成器可以导出SQL或mongo查询。我认为使用mongo查询是相对安全的,因为我可以简单地在服务器上添加:

query.owner_of_document = userId
限制结果(用户拥有的文档)

然而,如果有人试图存储恶意SQL字符串以供执行,则SQL语句可能在注入攻击中被劫持

直接从客户机接受SQL是一种不好的做法吗?如何确保提供的SQL是安全的


谢谢

为什么需要接受整个SQL语句

您能否只接受参数,然后运行预定义的查询

上有大量与SQL注入相关的问题/答案,使用参数是避免注入攻击的第一步,例如“”

但我认为另一个问题很好地概括了这一点:

不要试图自己做保安工作。用任何值得信赖的东西,工业 这里的标准库可用于您尝试执行的操作, 而不是自己去做。不管你做什么假设 关于安全性,可能不正确。尽可能安全地使用您自己的方法 看。。。你可能忽略了什么,是吗 真的想在安全问题上抓住这个机会吗

尝试定义safe,您会发现在SQL中很难确定它(想想常见的表表达式、子选择等等)