我的代码可以成功执行以下操作:
MATCH (c:Companies) WHERE c.CompanyID = "1234" SET c.Contacts = ['{"Name":"Test","Email":"[email protected]","Main":"0"}','{"Name":"Test 2","Email":"[email protected]"}']
这工作得很好。然而,我担心的是如何确保数组的值不被黑客攻击/注入?
典型的响应是使用以下参数:
MATCH (c:Companies) WHERE c.CompanyID = "1234" SET c.Contacts = ['$Element1','$Element2']
但是,这只会用我从用户那里收到的 JSON 替换这些值。除了自己清理输入之外,还有什么方法可以通过 Neo4j 来确保这一点?子参数可以吗::
MATCH (c:Companies) WHERE c.CompanyID = "1234" SET c.Contacts = ['$Element1','$Element2']
'Element1' => '{"Name":"$Name1","Email":"$Email1","Main":"0/1"}'
我只是想确保我走在正确的轨道上并且安全。
如果你想限制潜在的损害,你必须解析字符串并验证它确实是一个具有预期属性的 JSON 对象(而不是可执行代码),并且它们的值具有正确的格式。
旁白:如果您需要对联系人列表中的数据进行数据库查询,则不应将联系信息存储在序列化字符串中。