- ],
- $q->start_form( -action => 'group.cgi', -method => 'POST' ),
- $q->hidden( -name => 'nt_group_id' ),
+ ], $q->start_form( -action => 'group.cgi', -method => 'POST' ),
+ $nt_obj->csrf_hidden_field(), $q->hidden( -name => 'nt_group_id' ),
qq[ ], $q->textfield( -name => 'search_value', -size => 30, -override => 1 ),
$q->hidden(
-name => 'quick_search',
@@ -213,7 +218,7 @@ sub display_group_list {
if $rv->{'error_code'} != 200;
my $groups = $rv->{'groups'};
- my $map = $rv->{'group_map'};
+ my $map = ref $rv->{'group_map'} eq 'HASH' ? $rv->{'group_map'} : {};
$nt_obj->display_search_rows( $q, $rv, \%params, $cgi, ['nt_group_id'], $include_subgroups );
@@ -239,8 +244,10 @@ sub display_group_list {
my $gname = $group->{'name'} . "'s";
my $dname = join(
' / ',
- map( qq[$_->{'name'}],
- ( @{ $map->{$ggid} },
+ map( qq[]
+ . $nt_obj->esc( $_->{'name'} )
+ . qq[],
+ ( @{ $map->{$ggid} || [] },
{ nt_group_id => $ggid,
name => $group->{'name'}
}
@@ -259,15 +266,16 @@ sub display_group_list {
my $hname = join(
' / ',
map( $_->{'name'},
- ( @{ $map->{ $group->{'nt_group_id'} } },
+ ( @{ $map->{ $group->{'nt_group_id'} } || [] },
{ nt_group_id => $group->{'nt_group_id'},
name => $group->{'name'}
}
) )
);
+ my $js_hname = $nt_obj->esc( $nt_obj->js_escape($hname) );
print qq[
- ];
+ ];
}
else {
print qq[
@@ -346,6 +354,7 @@ sub display_edit {
-method => 'POST',
-name => 'perms_form'
),
+ $nt_obj->csrf_hidden_field(),
$q->hidden( -name => $edit );
if ( $edit eq 'new' ) {
$q->hidden( -name => 'parent_group_id' );
@@ -358,7 +367,7 @@ sub display_edit {
}
my $action = 'View';
- my $name = qq[$data->{'name'}];
+ my $name = qq[] . $nt_obj->esc( $data->{'name'} ) . qq[];
if ($modifyperm) {
$action = ucfirst($edit);
@@ -407,7 +416,9 @@ sub display_edit {
foreach ( keys %nsmap ) {
my $ns = $nt_obj->get_nameserver( nt_nameserver_id => $_ );
- print "$ns->{'description'} ($ns->{'name'}) ";
+ print ""
+ . $nt_obj->esc( $ns->{'description'} ) . " ("
+ . $nt_obj->esc( $ns->{'name'} ) . ") ";
}
print qq[
diff --git a/client/htdocs/group_log.cgi b/client/htdocs/group_log.cgi
index 22b6e2d1..710dcba5 100755
--- a/client/htdocs/group_log.cgi
+++ b/client/htdocs/group_log.cgi
@@ -37,7 +37,11 @@ sub main {
if ( $q->param('redirect') ) {
$message = $nt_obj->redirect_from_log($q);
}
- print $q->header( -charset => "utf-8" );
+ print $q->header(
+ -charset => "utf-8",
+ -cookie => $nt_obj->csrf_cookie( $nt_obj->get_csrf_token() ),
+ %{ $nt_obj->security_headers() }
+ );
display( $nt_obj, $q, $user, $message );
}
}
@@ -185,8 +189,10 @@ sub display_log {
],
join(
' / ',
- map( qq[$_->{'name'}],
- ( @{ $map->{ $row->{'nt_group_id'} } },
+ map( qq[]
+ . $nt_obj->esc( $_->{'name'} )
+ . qq[],
+ ( @{ $map->{ $row->{'nt_group_id'} } || [] },
{ nt_group_id => $row->{'nt_group_id'},
name => $row->{'group_name'}
}
@@ -203,7 +209,9 @@ sub display_log {
| ];
@@ -221,13 +229,13 @@ sub display_log {
| ];
}
else {
- print "\n $row->{$_} | ";
+ print "\n " . $nt_obj->esc( $row->{$_} ) . " | ";
}
}
print "\n ";
diff --git a/client/htdocs/group_nameservers.cgi b/client/htdocs/group_nameservers.cgi
index 55455292..fddeb06f 100755
--- a/client/htdocs/group_nameservers.cgi
+++ b/client/htdocs/group_nameservers.cgi
@@ -33,7 +33,11 @@ sub main {
my $user = $nt_obj->verify_session();
if ( $user && ref $user ) {
- print $q->header( -charset => "utf-8" );
+ print $q->header(
+ -charset => "utf-8",
+ -cookie => $nt_obj->csrf_cookie( $nt_obj->get_csrf_token() ),
+ %{ $nt_obj->security_headers() }
+ );
display( $nt_obj, $q, $user );
}
}
@@ -78,6 +82,8 @@ sub do_new {
return;
}
+ return $nt_obj->csrf_error_page() if !$nt_obj->verify_csrf();
+
my @fields = qw/ nt_group_id name ttl description address address6 logdir
datadir remote_login export_format export_interval export_serials /;
my %data;
@@ -93,7 +99,8 @@ sub do_new {
sub do_delete {
my ( $nt_obj, $q ) = @_;
- return if !$q->param('delete');
+ return if !$q->param('delete');
+ return $nt_obj->csrf_error_page() if !$nt_obj->verify_csrf();
my $error = $nt_obj->delete_nameserver(
nt_group_id => scalar( $q->param('nt_group_id') ),
@@ -115,6 +122,8 @@ sub do_edit {
return;
}
+ return $nt_obj->csrf_error_page() if !$nt_obj->verify_csrf();
+
# user clicked the 'Save' button
my @fields = qw/ nt_group_id nt_nameserver_id name ttl description
address address6 logdir datadir remote_login
@@ -196,7 +205,8 @@ sub display_list {
$nt_obj->display_move_javascript( 'move_nameservers.cgi', 'nameserver' );
print qq[
-
|