Commit 72e95e0702d55567e10c71f94355b26417384780
Committed by
Antonio Terceiro
1 parent
d0f8d245
Exists in
master
and in
29 other branches
Folder body filter javascript but not html code
* Used xss_terminate with the option 'white_list' that only filters the bad html codes. (ActionItem1437)
Showing
2 changed files
with
17 additions
and
0 deletions
Show diff stats
app/models/folder.rb
| ... | ... | @@ -4,6 +4,8 @@ class Folder < Article |
| 4 | 4 | |
| 5 | 5 | settings_items :view_as, :type => :string, :default => 'folder' |
| 6 | 6 | |
| 7 | + xss_terminate :only => [ :body ], :with => 'white_list' | |
| 8 | + | |
| 7 | 9 | def self.select_views |
| 8 | 10 | [[_('Folder'), 'folder'], [_('Image gallery'), 'image_gallery']] |
| 9 | 11 | end | ... | ... |
test/unit/folder_test.rb
| ... | ... | @@ -130,4 +130,19 @@ class FolderTest < ActiveSupport::TestCase |
| 130 | 130 | |
| 131 | 131 | assert_includes folder.images(true), pi |
| 132 | 132 | end |
| 133 | + | |
| 134 | + should 'not let pass javascript in the body' do | |
| 135 | + owner = create_user('testuser').person | |
| 136 | + folder = fast_create(Folder, {:profile_id => owner.id, :body => '<script>alert("Xss Attack!")</script>'}) | |
| 137 | + folder.save! | |
| 138 | + assert_no_match(/<script>/, folder.body) | |
| 139 | + end | |
| 140 | + | |
| 141 | + should 'let pass html in the body' do | |
| 142 | + owner = create_user('testuser').person | |
| 143 | + folder = fast_create(Folder, {:profile_id => owner.id, :body => '<strong>I am not a Xss Attack!")</strong>'}) | |
| 144 | + folder.save! | |
| 145 | + assert_match(/<strong>/, folder.body) | |
| 146 | + end | |
| 147 | + | |
| 133 | 148 | end | ... | ... |