Query su HttpSolrServer.Previene da iniezioni di query solrj quando si utilizza solrj
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery(q);
QueryResponse queryResponse = solrServer.query(solrQuery);
Ho bisogno di costruire una query solr, qualcosa come "autore: * user_inputed_text * Titolo: * * user_inputed_text" ho bisogno di qualcosa come PreparedStatement, ma non riuscivo a trovare qualcosa di simile in solrj biblioteca. Come costruire una query che non contenga injectionint? Come rendere la stringa inserita dall'utente - \ user_input_text \ safe?
Sto costruendo una query utilizzando la concatenazione. Quando ho, per esempio questo codice:
public String buildQuery(String userInputedText) {
String query = "author:*" + userInputedText + "* OR title:*" + userInputedText + "*";
}
allora l'utente può iniettare qualche subquery e ricevere i risultati, che non è limitato. Ad esempio, la stringa inserita era: "OR title:". Quindi, l'intera query sarà: autore: * OR titolo: * OR titolo: * OR titolo: *
In questo caso l'utente riceve tutti i risultati (non sono limitati) e passa all'autore del modello: *? * OR titolo: *? *.
qual è il problema ... Spiega il problema che stai affrontando – kirti
In realtà non è chiaro per me cosa intendi dire che devi renderlo sicuro. Potresti per favore pubblicare un esempio su come rendere "non sicuro" una query su Solr? Stai eseguendo una query, quindi non è possibile danneggiare i tuoi indeces. Penso che dovresti dare maggiori dettagli sul tuo obiettivo. – Max