接受客户端SQL可以吗?如果是,如何验证?
我有一个应用程序,其中我希望从前端查询生成器()接受用户提供的SQL查询。该查询最终需要在postgres数据库中运行,以返回数据的子集 上面链接的查询生成器可以导出SQL或mongo查询。我认为使用mongo查询是相对安全的,因为我可以简单地在服务器上添加:接受客户端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
query.owner_of_document = userId
限制结果(用户拥有的文档)
然而,如果有人试图存储恶意SQL字符串以供执行,则SQL语句可能在注入攻击中被劫持
直接从客户机接受SQL是一种不好的做法吗?如何确保提供的SQL是安全的
谢谢 为什么需要接受整个SQL语句 您能否只接受参数,然后运行预定义的查询 上有大量与SQL注入相关的问题/答案,使用参数是避免注入攻击的第一步,例如“” 但我认为另一个问题很好地概括了这一点: 不要试图自己做保安工作。用任何值得信赖的东西,工业 这里的标准库可用于您尝试执行的操作, 而不是自己去做。不管你做什么假设 关于安全性,可能不正确。尽可能安全地使用您自己的方法 看。。。你可能忽略了什么,是吗 真的想在安全问题上抓住这个机会吗 尝试定义safe,您会发现在SQL中很难确定它(想想常见的表表达式、子选择等等)