Thomas Mueller created OAK-320:
----------------------------------

             Summary: Query: ability to disable/enable literals in queries
                 Key: OAK-320
                 URL: https://issues.apache.org/jira/browse/OAK-320
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: core, jcr
            Reporter: Thomas Mueller
            Assignee: Thomas Mueller
            Priority: Minor


For security reasons, literals should not be used in queries, because it is 
easy to forget correctly quoting. This is specially risky for admin sessions. 
Example:

    qm.createQuery("select user from [acme:user] where " + 
        "name = '" + userName + "' and " + 
        "password = '" + password + "'", Query.JCR_SQL2);

Most developers know they are supposed to use bind variables, but history has 
shown that still many developers (for whatever reasons) don't do it sometimes. 
Fortunately the JCR API does not provide ways to manipulate data within a 
query, however there is still a risk, specially for admin sessions.

A simple way to find out whether bind variables are used throughout the code is 
to disable literals in queries (so that if a literal is used within a query, 
the query will fail to parse). This feature could be used in unit tests only, 
or in production, or just for some session (for example only admin session). 

The query parser already supports disabling literals, but there is currently no 
way to enable this feature. There are multiple ways we could use to enable this 
switch: for example, literals are always disabled just for admin sessions. Or 
literals are always disabled for all sessions except if the session was opened 
with literals explicitly enabled:

    SimpleCredentials c = new SimpleCredentials(
        "admin", "admin".toCharArray());
    c.setAttribute("queryLiterals", "true");
    return getRepository().login(c);


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to