questo è un seguito di questo thread . Quindi sto cercando di eseguire un'iniezione NoSQL su un'applicazione web che è scritta in Python e si connette a un backend MongoDB. Il problema che sto avendo è che non sono in grado di inviare il carattere di virgoletta singola a MongoDB perché il codice Python si capovolge quando lo includo nella mia query. Ecco il codice relativo per l'app Python:
condition = form.getvalue('Name')
if condition:
where = {"$where": "this.Name == '"+condition+"'" }
else:
where = ""
{snip}
if where:
for record in collection.find(where):
print "<tr>"
print "<td align=\"center\">"+record["Name"]+"</td>"
Quando provo a passare una singola citazione attraverso il parametro "Nome" tramite una richiesta POST, ottengo il seguente errore:
42 if where:
=> 43 for record in collection.find(where):
44 print "<tr>"
45 print "<td align=\"center\">"+record["Name"]+"</td>"
record undefined, collection = Collection(Database(MongoClient('localhost', 27017), u'test_database'), u'the_names'), collection.find = <bound method Collection.find of Collection(Data...', 27017), u'test_database'), u'the_names')>, where = {'$where': "this.Name == 'test''"}
Sono abbastanza sicuro di non poter eseguire l'iniezione NoSQL a meno che non sia in grado di passare il carattere di virgoletta singola all'istanza MongoDB, in modo che possa sfuggire alla query esistente e avviarne una nuova. La mia domanda è, come posso non sfuggire alla singola citazione in Python, eppure è fuggita in Javascript? Ho provato varie cose come la codifica Unicode della virgoletta singola, ma questo ha solo causato a MongoDB di includerlo nella mia query (perché non era sfuggito). Grazie per l'aiuto!