Aiuta a iniettare un MongoDB utilizzato da un'applicazione web Python

1

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!

    
posta chopteeth 04.07.2016 - 21:04
fonte

0 risposte

Leggi altre domande sui tag