este es un seguimiento de este hilo . Así que estoy tratando de realizar una inyección NoSQL en una aplicación web que está escrita en Python y se conecta a un back-end de MongoDB. El problema que tengo es que no puedo enviar el carácter de comillas simples a MongoDB porque el código de Python desaparece cuando lo incluyo en mi consulta. Aquí está el código relevante para la aplicación Python:
condition = form.getvalue('Name')
if condition:
where = {"$where": "this.Name == '"+condition+"'" }
else:
where = ""
{recorte}
if where:
for record in collection.find(where):
print "<tr>"
print "<td align=\"center\">"+record["Name"]+"</td>"
Cuando intento pasar una sola cita a través del parámetro "Nombre" a través de una solicitud POST, aparece el siguiente error:
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''"}
Estoy bastante seguro de que no puedo realizar la inyección NoSQL a menos que pueda pasar el carácter de comillas simples a la instancia de MongoDB, de modo que pueda escapar de la consulta existente y comenzar una nueva. Mi pregunta es, ¿cómo no puedo escapar de la comilla simple en Python, y sin embargo, se ha escapado en Javascript? He intentado varias cosas, como Unicode, que codifica la comilla simple, pero eso solo hizo que MongoDB lo incluyera en mi consulta (porque no se escapó). ¡Gracias por la ayuda!