首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在API上公开后续过滤机制

在API上公开后续过滤机制
EN

Stack Overflow用户
提问于 2017-04-23 09:21:15
回答 1查看 344关注 0票数 1

最近我一直在研究与PostgreSQL一起使用的Node,并希望在前端公开某种类型的灵活过滤。

我非常喜欢Sequelize的where/include过滤提供的灵活性(例如,过滤基于某种关系N层深度的模型)。

过滤机制对任何前端API都是安全的吗?我没有太多的经验,所以我不确定什么类型的字段可以传递到过滤器查询。

否则,对于更复杂的查询,我可能会使用类似Knex的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 07:10:06

通常,如果您需要问公开直接传递到您的前端的where/include参数是否安全,我建议您不要这样做。如果你不知道它的行为,你最终会很快泄露你所有的用户和密码哈希给世界。

因此,您最好通过验证传入的过滤参数,然后再将它们传递给查询。例如,您可以使用json模式来验证传入的参数。

例如,在objection.js ORM中,处理这个问题的方式是,您可以给代码中的查询某种模式--用户可以将什么数据包含到响应中,然后将传入的用户输入自动减少到该子集(只有在请求到被请求行的额外关系时才有效)。

代码语言:javascript
复制
var houseWithPossiblePetsAndOwner = await House.query()
  .allowEager('[pets, owner]')
  .eager(eagerParamDirectlyFromEndUser)
  .where('id', id);

您可以扩展您喜欢的ORM以支持这种额外的方法,它允许您为查询声明哪些参数可以从用户输入传递给它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43569373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档