You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mastodon/app/models
Claire 0a120d86d2
Fix error-prone SQL queries (#15828)
* Fix error-prone SQL queries in Account search

While this code seems to not present an actual vulnerability, one could
easily be introduced by mistake due to how the query is built.

This PR parameterises the `to_tsquery` input to make the query more robust.

* Harden code for Status#tagged_with_all and Status#tagged_with_none

Those two scopes aren't used in a way that could be vulnerable to an SQL
injection, but keeping them unchanged might be a hazard.

* Remove unneeded spaces surrounding tsquery term

* Please CodeClimate

* Move advanced_search_for SQL template to its own function

This avoids one level of indentation while making clearer that the SQL template
isn't build from all the dynamic parameters of advanced_search_for.

* Add tests covering tagged_with, tagged_with_all and tagged_with_none

* Rewrite tagged_with_none to avoid multiple joins and make it more robust

* Remove obsolete brakeman warnings

* Revert "Remove unneeded spaces surrounding tsquery term"

The two queries are not strictly equivalent.

This reverts commit 86f16c537e.
4 years ago
..
account_suggestions Change auto-following admin-selected accounts, show in recommendations (#16078) 4 years ago
admin Add notifications for statuses deleted by moderators (#17204) 4 years ago
concerns Add notifications for statuses deleted by moderators (#17204) 4 years ago
form Add notifications for statuses deleted by moderators (#17204) 4 years ago
trends Change trending hashtags threshold back from 15 to 5 (#17122) 4 years ago
web
account.rb Fix error-prone SQL queries (#15828) 4 years ago
account_alias.rb
account_conversation.rb
account_deletion_request.rb
account_domain_block.rb
account_filter.rb Remove IP tracking columns from users table (#16409) 4 years ago
account_migration.rb
account_moderation_note.rb
account_note.rb Fix AccountNote not having a maximum length (#16942) 4 years ago
account_pin.rb
account_stat.rb Bump chewy from 5.2.0 to 7.2.3 (supports Elasticsearch 7.x) (#16915) 4 years ago
account_statuses_cleanup_policy.rb Add trending links (#16917) 4 years ago
account_suggestions.rb Change auto-following admin-selected accounts, show in recommendations (#16078) 4 years ago
account_summary.rb Fix FollowRecommendationsScheduler failing because of unpopulated views (#16189) 4 years ago
account_warning.rb Add notifications for statuses deleted by moderators (#17204) 4 years ago
account_warning_preset.rb
admin.rb
announcement.rb
announcement_filter.rb
announcement_mute.rb
announcement_reaction.rb
application_record.rb
backup.rb
block.rb
bookmark.rb Bump chewy from 5.2.0 to 7.2.3 (supports Elasticsearch 7.x) (#16915) 4 years ago
canonical_email_block.rb Add ability for admins to delete canonical email blocks (#16644) 4 years ago
context.rb
conversation.rb
conversation_mute.rb
custom_emoji.rb Switch from unmaintained paperclip to kt-paperclip (#16724) 4 years ago
custom_emoji_category.rb
custom_emoji_filter.rb
custom_filter.rb
device.rb
domain_allow.rb
domain_block.rb
email_domain_block.rb
encrypted_message.rb
export.rb
favourite.rb Bump chewy from 5.2.0 to 7.2.3 (supports Elasticsearch 7.x) (#16915) 4 years ago
featured_tag.rb
feed.rb
follow.rb
follow_recommendation.rb Fix FollowRecommendationsScheduler failing because of unpopulated views (#16189) 4 years ago
follow_recommendation_filter.rb
follow_recommendation_suppression.rb
follow_request.rb Fix edge case where accepted follow cannot be processed because of follow limit (#16098) 4 years ago
home_feed.rb
identity.rb
import.rb
instance.rb Add management of delivery availability in Federation settings (#15771) 4 years ago
instance_filter.rb Add management of delivery availability in Federation settings (#15771) 4 years ago
invite.rb
invite_filter.rb
ip_block.rb
list.rb
list_account.rb
list_feed.rb
login_activity.rb Add authentication history (#16408) 4 years ago
marker.rb
media_attachment.rb Fix error when rendering public pages with media attachments (#16763) 4 years ago
mention.rb
message_franking.rb
mute.rb
notification.rb
one_time_key.rb
poll.rb Add support for editing for published statuses (#16697) 4 years ago
poll_vote.rb
preview_card.rb Fix error on trending hashtags/links pages in admin UI due to missing constant (#17044) 4 years ago
preview_card_filter.rb Add trending links (#16917) 4 years ago
preview_card_provider.rb Add trending links (#16917) 4 years ago
preview_card_provider_filter.rb Add trending links (#16917) 4 years ago
public_feed.rb
relationship_filter.rb
relay.rb
remote_follow.rb
report.rb Add notifications for statuses deleted by moderators (#17204) 4 years ago
report_filter.rb Add notifications for statuses deleted by moderators (#17204) 4 years ago
report_note.rb
rule.rb
scheduled_status.rb
search.rb
session_activation.rb Add Ruby 3.0 support (#16046) 4 years ago
setting.rb
site_upload.rb
status.rb Fix error-prone SQL queries (#15828) 4 years ago
status_edit.rb Add support for editing for published statuses (#16697) 4 years ago
status_pin.rb Add feature to automatically delete old toots (#16529) 4 years ago
status_stat.rb
system_key.rb
tag.rb Fix error on trending hashtags/links pages in admin UI due to missing constant (#17044) 4 years ago
tag_feed.rb
tag_filter.rb Add trending links (#16917) 4 years ago
tombstone.rb
trends.rb Add trending links (#16917) 4 years ago
unavailable_domain.rb
user.rb Remove leftover database columns from Devise::Models::Rememberable (#17191) 4 years ago
user_invite_request.rb
user_ip.rb Remove IP tracking columns from users table (#16409) 4 years ago
web.rb
webauthn_credential.rb