8e6930d257
The `joins` are declared explicitely in order to associate a predictable name to the joined table. Otherwise, when the query is joined with `:users`, ActiveRecord will alias the join automatically to solve the conflict. Unfortunately, the automatic resolution means that the table name becomes unpredictable, and thus unsuitable to perform queries on.
105 lines
4.5 KiB
Text
105 lines
4.5 KiB
Text
{
|
|
"ignored_warnings": [
|
|
{
|
|
"warning_type": "Cross-Site Scripting",
|
|
"warning_code": 2,
|
|
"fingerprint": "483ae8c038244eb3ed709e89846335e2c8ff6579260348ec31d3d03d1c94ad64",
|
|
"check_name": "CrossSiteScripting",
|
|
"message": "Unescaped model attribute",
|
|
"file": "app/views/users/dossiers/merci.html.haml",
|
|
"line": 28,
|
|
"link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting",
|
|
"code": "current_user.dossiers.includes(:procedure).find(params[:id]).procedure.monavis_embed",
|
|
"render_path": [{"type":"controller","class":"Users::DossiersController","method":"merci","line":177,"file":"app/controllers/users/dossiers_controller.rb"}],
|
|
"location": {
|
|
"type": "template",
|
|
"template": "users/dossiers/merci"
|
|
},
|
|
"user_input": "current_user.dossiers.includes(:procedure)",
|
|
"confidence": "Weak",
|
|
"note": ""
|
|
},
|
|
{
|
|
"warning_type": "SQL Injection",
|
|
"warning_code": 0,
|
|
"fingerprint": "bd1df30f95135357b646e21a03d95498874faffa32e3804fc643e9b6b957ee14",
|
|
"check_name": "SQL",
|
|
"message": "Possible SQL injection",
|
|
"file": "app/models/concerns/dossier_filtering_concern.rb",
|
|
"line": 18,
|
|
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
|
|
"code": "where(\"#{values.count} OR #{\"(#{ProcedurePresentation.sanitized_column(table, column)} ILIKE ?)\"}\", *values.map do\n \"%#{value}%\"\n end)",
|
|
"render_path": null,
|
|
"location": {
|
|
"type": "method",
|
|
"class": "DossierFilteringConcern",
|
|
"method": null
|
|
},
|
|
"user_input": "values.count",
|
|
"confidence": "Medium",
|
|
"note": "The table and column are escaped, which should make this safe"
|
|
},
|
|
{
|
|
"warning_type": "SQL Injection",
|
|
"warning_code": 0,
|
|
"fingerprint": "e6f09095e3d381bcf6280d2f9b06c239946be3e440330136934f34611bc2b2d9",
|
|
"check_name": "SQL",
|
|
"message": "Possible SQL injection",
|
|
"file": "app/models/procedure_presentation.rb",
|
|
"line": 106,
|
|
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
|
|
"code": "((\"self\" == \"self\") ? (dossiers) : (dossiers.includes(\"self\"))).order(\"#{self.class.sanitized_column(\"self\", column)} #{order}\")",
|
|
"render_path": null,
|
|
"location": {
|
|
"type": "method",
|
|
"class": "ProcedurePresentation",
|
|
"method": "sorted_ids"
|
|
},
|
|
"user_input": "self.class.sanitized_column(\"self\", column)",
|
|
"confidence": "Weak",
|
|
"note": "`table`, `column` and `order` come from the model, which is validated to prevent injection attacks. Furthermore, `table` and `column` are escaped."
|
|
},
|
|
{
|
|
"warning_type": "SQL Injection",
|
|
"warning_code": 0,
|
|
"fingerprint": "f85ed20c14a223884f624d744ff99070f6fc0697d918f54a08e7786ad70bb243",
|
|
"check_name": "SQL",
|
|
"message": "Possible SQL injection",
|
|
"file": "app/models/procedure_presentation.rb",
|
|
"line": 95,
|
|
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
|
|
"code": "dossiers.includes(((\"type_de_champ\" == \"type_de_champ\") ? (:champs) : (:champs_private))).where(\"champs.type_de_champ_id = #{column.to_i}\").order(\"champs.value #{order}\")",
|
|
"render_path": null,
|
|
"location": {
|
|
"type": "method",
|
|
"class": "ProcedurePresentation",
|
|
"method": "sorted_ids"
|
|
},
|
|
"user_input": "order",
|
|
"confidence": "Weak",
|
|
"note": "`column` and `order` come from the model, which is validated to prevent injection attacks. Furthermore, the sql injection attack on `column` would need to survive the `to_i`"
|
|
},
|
|
{
|
|
"warning_type": "SQL Injection",
|
|
"warning_code": 0,
|
|
"fingerprint": "fd9d738975ccb93c8915833fceb3f43ac35410d653b8c64a1c92c1afc36d2177",
|
|
"check_name": "SQL",
|
|
"message": "Possible SQL injection",
|
|
"file": "app/models/procedure_presentation.rb",
|
|
"line": 102,
|
|
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
|
|
"code": "dossiers.includes(:followers_instructeurs).joins(\"LEFT OUTER JOIN users instructeurs_users ON instructeurs_users.instructeur_id = instructeurs.id\").order(\"instructeurs_users.email #{order}\")",
|
|
"render_path": null,
|
|
"location": {
|
|
"type": "method",
|
|
"class": "ProcedurePresentation",
|
|
"method": "sorted_ids"
|
|
},
|
|
"user_input": "order",
|
|
"confidence": "Weak",
|
|
"note": ""
|
|
}
|
|
],
|
|
"updated": "2019-10-16 16:19:43 +0200",
|
|
"brakeman_version": "4.3.1"
|
|
}
|