2017-02-16 26 views
1


我有一个简单的过滤器,用于搜索保存在数据库中的图像。因此,我使用正则表达式:

Images.find({"name":{$regex:".*"+query+".*"}});

当然,我用check(query, String);函数检查值。 如果我不逃避正则表达式中的特殊字符(query var,其内容由用户指定),它会是一个很大的安全问题吗?对我而言,用户可以定义像(nameOfImage1 | nameOfImage2)这样的优点。我可以在Meteor find函数中使用用户定义的正则表达式,而不用转义特殊字符吗?

+0

取代了一些选定的字符如果他们定义类似['abc(。*)* def'](https://regex101.com/r/YVJUyt/2)? –

+0

在这种情况下,它找不到任何东西 - 但它不是问题。我只关心安全问题。 – JkmAS

+0

使用'abcdddddddddddddddddddddddddddddddddddf'它会超时。 –

回答

0

根据@Michel Floyd的上述评论,这不是一个安全问题,我在find()中使用正则表达式。但我也用query.replace(/[\/\\^$*[\]{}]/g, "");

相关问题