Peter Kriens created SHIRO-629:
----------------------------------

             Summary: WildcardPermission syntax
                 Key: SHIRO-629
                 URL: https://issues.apache.org/jira/browse/SHIRO-629
             Project: Shiro
          Issue Type: Question
          Components: Authorization (access control) 
            Reporter: Peter Kriens
            Priority: Critical


While looking at the WildcardPermission I see it allows a much wider range of 
usage then used in all the examples I've seen. Looking at the implementation I 
notice it is not verifying. I also noted that there is no escaping for matching 
the [*:,] tokens in the target permission. I think the examples follow the 
grammar like:

      permission ::= part ( ':' part ) *
      part            ::= wildcard | options
      wildcard     ::= '*'
      options      ::= literal ( ',' literal )
      literal         ::= [^*:,]+

This should disallow permissions like "abc*def", "abc:def,*:foo", "abc:", 
"x:::::::::::::::". However, the implementation seems to more or less allow 
anything without warnings or errors. Is this intentional?

Last, the implementation looks quite expensive since it requires for each 
construction numerous lists, sets, and arrays. It also executes n*m a regular 
expression operations for the split. Since the target permission could be 
constructed frequently since it contains the parameters this is imho very 
costly. 

Therefore it would be nice if a formal grammar including the character set and 
escaping.




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to