繁体   English   中英

Ruby on Rails的neo4j参数如何安全?

[英]How to do neo4j parameter safe for Ruby on Rails?

例如,句子是"I'm playing football"

该参数必须为"I\\'m playing football"并带有对neo4j体系结构的单引号。

我尝试了variable.html_safe但是很遗憾,它不起作用。

运行时信息:

Neo4j database version: neo4j 3.3.1

neo4j gem version: 9.0.7

neo4j-core gem version: 8.1.0

作为参考,在neo4j库中的一个问题上回答了此问题 在此处复制/粘贴:

您可以做几件事。 我要说的第一件事是,您永远不要(或者至少非常很少)将数据直接注入查询字符串。 有可能:

  • 如果您不适当地转义字符串,则不要踩
  • 缓慢,因为每次查询字符串更改时Neo4j无法优化查询计划
  • 如果此数据来自用户,则不安全,因为他们可能会产生Cypher注入攻击

理想情况下, sqlParametre应该是一个数组,以便您可以执行以下操作:

tablo = Word.query_as(:w).where('w.ad IN {ads}').params(ads: sqlParametre)
# or as a shortcut:
tablo = Word.query_as(:w).where('w.ad IN ?', sqlParametre)

但是,由于您拥有ActiveNode模型,因此您也可以在更高级别上工作,并用以下代码替换第89和91行:

kayitSayisi = Word.as(:w).where(ad: sqlParametre).pluck('SUM(w)').first

对于最后一行,请注意,如果sqlParametre是数组,则neo4j gem自动检测到该情况并创建Cypher语法WHERE w.ad IN {param}而不是WHERE w.ad = {param}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM