Thanks for the info Jorge, I will look into invariants, good pointer.

My API, forces the rows to be a max of 500. If the user specifies more than
500 docs, then we modify the rows param to be 500.

On Tue, Oct 7, 2014 at 3:31 PM, Jorge Luis Betancourt Gonzalez <
jlbetanco...@uci.cu> wrote:

> I see you’re defining a default value for “rows” this could be overridden
> on the request, and requesting a lot of documents from solr can stress out
> your server/cluster, of course if the client in question has that many
> documents. if this is a fixed value and the clients can’t request more
> documents, then I’ll consider moving this into the invariants section
> ensuring that no matter what this value can’t be changed by the request.
> Some time ago I had a similar use case, we wanted to expose Solr to the
> clients and eventually we faced problems where some clients requested “all
> of his documents” in one request stressing out our cluster in the end we
> wrote a custom SearchComponent to set max values (instead of a fixed value
> specified on invariants) for the rows and start parameters (actually this
> component those a little more as we add some limitations to each type of
> client, defining some constrains as how many documents. i.e. data points
> can be requested, etc.).
>
> Hope it helps,
>
> On Oct 7, 2014, at 11:37 AM, Nitin Agarwal <2nitinagar...@gmail.com>
> wrote:
>
> > Hi, I have a question around SOLR query, I am trying to restrict access
> to
> > SOLR data.
> >
> > We are running SOLR 4.7.1, and wish to expose the query capabilities to
> our
> > customers for the data that belongs to them. Specifically "/select", with
> > default configuration is the only Request Handler that customers can
> > access.
> >
> > <requestHandler name="/select" class="solr.SearchHandler">
> >     <lst name="defaults">
> >       <str name="echoParams">explicit</str>
> >       <int name="rows">10</int>
> >       <str name="df">text</str>
> >     </lst>
> > </requestHandler>
> >
> > The custom API that fronts SOLR, will inject appropriate restriction
> > into the "q" param e.g. q=customerNumber:123 or
> > append to "q" param q=<customer query> AND customerNumber:123, before
> > sending the request to the "/select" handler.
> >
> > This works fine, however,
> >
> > I want to know if there is a way customer can override these
> restrictions?
> >
> > If so what can I do to prevent that?
> >
> > So far I have come across facet.mincount as one potential concern
> > where by customer can see data that they should not, e.g.
> >
> > /select?q=<customer query> AND
> >
> customerNumber:123&facet=true&facet.field=customerName&rows=0&*facet.mincount=0*
> >
> > will return those customer names as well that do not belong to
> > customerNumber 123.
> >
> > Are there any other gotchas that I should know?
> >
> > Thanks for your time and help,
> >
> > Nitin
>
> Concurso "Mi selfie por los 5". Detalles en
> http://justiciaparaloscinco.wordpress.com
>

Reply via email to