Interface InsecureOrderPathsRegistry

All Known Implementing Classes:
InsecureOrderPathsRegistryImpl

public interface InsecureOrderPathsRegistry
In AbstractCriteriaBuilderWrapper, if the order by expression contains a join to a table that has security restrictions, the expression is wrapped into a 'CASE .. WHEN' that returns NULL when the security conditions are not met. This leads to the records being sorted by NULL which prevents that data is "leaked" which the user doesn't have access to. By "leaking" we mean: The data will not be visible and the particular table cell will be empty. However, if the record before has the value "AAA" and the record after the empty cell has the value "AAB", you know that the hidden value in between is between those values. Sorting by a 'CASE .. WHEN' result column is very expensive for big datasets. Therefore, in some cases it can make sense to disable this "leak" protection, so that the column can be ordered by the value on the database (even though it shouldn't be visible after that). This can lead to huge performance boosts for big datasets. This registry contains all the paths which we allow to be sorted in this insecure way. CAUTION: Add paths to this registry very carefully and look at it as a last resort to speed up a very slow query, if there's no other option to improve the performance. Never use it for sensitive data.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    insecureOrderAllowed(String entityModel, String path)
     
  • Method Details

    • insecureOrderAllowed

      boolean insecureOrderAllowed(String entityModel, String path)