Skip to content

Commit

Permalink
Validate allowed schemes on preview card URLs (mastodon#27485)
Browse files Browse the repository at this point in the history
  • Loading branch information
mjankowski authored Oct 23, 2023
1 parent 9d45a44 commit b021347
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion app/models/preview_card.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class PreviewCard < ApplicationRecord

has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 90 +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' }, validate_media_type: false

validates :url, presence: true, uniqueness: true
validates :url, presence: true, uniqueness: true, url: true
validates_attachment_content_type :image, content_type: IMAGE_MIME_TYPES
validates_attachment_size :image, less_than: LIMIT
remotable_attachment :image, LIMIT
Expand Down
28 changes: 28 additions & 0 deletions spec/models/preview_card_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# frozen_string_literal: true

require 'rails_helper'

describe PreviewCard do
describe 'validations' do
describe 'urls' do
it 'allows http schemes' do
record = described_class.new(url: 'http://example.host/path')

expect(record).to be_valid
end

it 'allows https schemes' do
record = described_class.new(url: 'https://example.host/path')

expect(record).to be_valid
end

it 'does not allow javascript: schemes' do
record = described_class.new(url: 'javascript:alert()')

expect(record).to_not be_valid
expect(record).to model_have_error_on_field(:url)
end
end
end
end

0 comments on commit b021347

Please sign in to comment.