aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Template.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2019-12-05 15:55:20 +0000
committerMatthew Somerville <matthew@mysociety.org>2020-01-09 10:57:25 +0000
commitba9efbd5b0bca630ecd6299240992efc3422dfca (patch)
tree0ca290ee8e9b399e7dc5fd42adbed7161c79a06b /perllib/FixMyStreet/Template.pm
parentc4961f186e1bf5b9f14fa51e99c37bc013dd8e37 (diff)
Scrub admin description fields.
Diffstat (limited to 'perllib/FixMyStreet/Template.pm')
-rw-r--r--perllib/FixMyStreet/Template.pm17
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;