A method comprising, by one or more computing devices: analyzing one or more first numeric constraints and one or more first string constraints associated with a software module, wherein: the software module (m) comprises: one or more numeric variables (vi, vb); one or more string variables (vs); one or more first operations that apply to specific ones of the numeric variables and produce numeric or string results; and one or more second operations that apply to specific ones of the string variables and produce numeric or string results; the first numeric constraints apply to specific ones of the numeric variables; and the first string constraints apply to specific ones of the string variables; inferring one or more second numeric constraints applying to specific ones of the string variables; inferring one or more second string constraints applying to specific ones of the numeric variables; combining the one or more first numeric constraints, the one or more first string constraints, the one or more second numeric constraints, and the one or more second string constraints into a hybrid set of constraints; representing each one of the first and second numeric constraints with an equation; representing each one of the first and second string constraints with a finite state machine; grouping each of the first and second string constraints represented by a finite state machine in a string domain and each of the first and second numeric constraints into a numeric domain, verifying whether the software module is able to detect one or more forms of injection attacks by performing a plurality of iterations to solve for a solution for the string constraints in the string domain and for the numeric constraints in the numeric domain; and while performing the plurality of iterations, feeding a solution derived from a previous iteration in the string domain to the numeric domain and feeding a solution derived from a previous iteration in the numeric domain to the string domain. analyzing one or more first numeric constraints and one or more first string constraints associated with a software module, wherein: the software module (m) comprises: one or more numeric variables (vi, vb); one or more string variables (vs); one or more first operations that apply to specific ones of the numeric variables and produce numeric or string results; and one or more second operations that apply to specific ones of the string variables and produce numeric or string results; the first numeric constraints apply to specific ones of the numeric variables; and the first string constraints apply to specific ones of the string variables; the software module (m) comprises: one or more numeric variables (vi, vb); one or more string variables (vs); one or more first operations that apply to specific ones of the numeric variables and produce numeric or string results; and one or more second operations that apply to specific ones of the string variables and produce numeric or string results; one or more numeric variables (vi, vb); one or more string variables (vs); one or more first operations that apply to specific ones of the numeric variables and produce numeric or string results; and one or more second operations that apply to specific ones of the string variables and produce numeric or string results; the first numeric constraints apply to specific ones of the numeric variables; and the first string constraints apply to specific ones of the string variables; inferring one or more second numeric constraints applying to specific ones of the string variables; inferring one or more second string constraints applying to specific ones of the numeric variables; combining the one or more first numeric constraints, the one or more first string constraints, the one or more second numeric constraints, and the one or more second string constraints into a hybrid set of constraints; representing each one of the first and second numeric constraints with an equation; representing each one of the first and second string constraints with a finite state machine; grouping each of the first and second string constraints represented by a finite state machine in a string domain and each of the first and second numeric constraints into a numeric domain, verifying whether the software module is able to detect one or more forms of injection attacks by performing a plurality of iterations to solve for a solution for the string constraints in the string domain and for the numeric constraints in the numeric domain; and while performing the plurality of iterations, feeding a solution derived from a previous iteration in the string domain to the numeric domain and feeding a solution derived from a previous iteration in the numeric domain to the string domain.