diff options
author | Matthew Somerville <matthew@mysociety.org> | 2020-01-10 11:55:18 +0000 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2020-01-10 11:55:18 +0000 |
commit | 9d66124566ebe5d8348ceadfeb54a7dd389e308c (patch) | |
tree | 60cd399d677794b768060652c160233cf0b4d569 /perllib/FixMyStreet/Template.pm | |
parent | 89897e5912e5ba17318917f5290561473d9b64c1 (diff) | |
parent | ba9efbd5b0bca630ecd6299240992efc3422dfca (diff) |
Merge branch 'html-scrubber'
Diffstat (limited to 'perllib/FixMyStreet/Template.pm')
-rw-r--r-- | perllib/FixMyStreet/Template.pm | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Template.pm b/perllib/FixMyStreet/Template.pm index 84faeb562..afab83e41 100644 --- a/perllib/FixMyStreet/Template.pm +++ b/perllib/FixMyStreet/Template.pm @@ -6,6 +6,7 @@ use warnings; use FixMyStreet; use mySociety::Locale; use Attribute::Handlers; +use HTML::Scrubber; use FixMyStreet::Template::SafeString; use FixMyStreet::Template::Context; use FixMyStreet::Template::Stash; @@ -135,4 +136,20 @@ sub html_paragraph : Filter('html_para') { return FixMyStreet::Template::SafeString->new($text); } +sub sanitize { + my $text = shift; + + my %allowed_tags = map { $_ => 1 } qw( p ul ol li br b i strong em ); + my $scrubber = HTML::Scrubber->new( + rules => [ + %allowed_tags, + a => { href => qr{^(http|/|tel)}i, style => 1, target => qr/^_blank$/, title => 1 }, + font => { color => 1 }, + span => { style => 1 }, + ] + ); + $text = $scrubber->scrub($text); + return $text; +} + 1; |