class N1Finder::N1Query
N+1 queries representation
Attributes
line[R]
@!attribute [r] query
Query with masked ids
@!attribute [r] line
Line where queries were executed in application
@!attribute [r] original_queries
All similar (N+1) original queries strings
original_queries[R]
@!attribute [r] query
Query with masked ids
@!attribute [r] line
Line where queries were executed in application
@!attribute [r] original_queries
All similar (N+1) original queries strings
query[R]
@!attribute [r] query
Query with masked ids
@!attribute [r] line
Line where queries were executed in application
@!attribute [r] original_queries
All similar (N+1) original queries strings
Public Class Methods
generate_by(queries)
click to toggle source
Generates N1Finder::N1Query
from array of N1Finder::Query
@param [Array<N1Finder::Query>] queries
@return [Array<N1Finder::N1Query>] queries that have N+1 vulnerability
# File lib/n_1_finder/n_1_query.rb, line 27 def self.generate_by(queries) grouped_queries = queries.group_by(&:footprint) n1_grouped_queries = grouped_queries.select do |_, similar_queries| similar_queries.count > 1 end n1_grouped_queries.map do |_, similar_queries| new(similar_queries) end end
new(queries)
click to toggle source
A new instance of N1Finder::N1Query
query initialized by similar queries
@param [Array<N1Finder::Query>] queries
# File lib/n_1_finder/n_1_query.rb, line 16 def initialize(queries) @query = queries.first.footprint[:query] @line = queries.first.footprint[:line] @original_queries = queries.map(&:query) end