#!/usr/bin/perl # # Authors: # Afuna # # Copyright (c) 2014 by Dreamwidth Studios, LLC. # # This program is free software; you may redistribute it and/or modify it under # the same terms as Perl itself. For a copy of the license, please reference # 'perldoc perlartistic' or 'perldoc perlgpl'. package DW::XML::Parser; use base qw(XML::Parser); use strict; =head1 NAME DW::XML::Parser - XML Parser with security options turned on. Use when parsing XML files that you don't control and that could contain potentially malicious input =head1 SYNOPSIS =cut sub new { my ( $self, %opts ) = @_; # don't try to load external entities (remote/local file inclusion attacks) $opts{Handlers}->{ExternEnt} ||= \&_ignore_extern_ent, $opts{Handlers}->{ExternEntFin} ||= \&_ignore_extern_ent, return $self->SUPER::new(%opts); } sub _ignore_extern_ent { return ""; } 1;