summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralee <alee@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2009-06-10 18:46:53 +0000
committeralee <alee@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2009-06-10 18:46:53 +0000
commite16a87cf4d9bc9b9953638dbf3e68fc496b4a809 (patch)
tree51bd7dd58c95416fcde7526bbe33c882a8d46630
parent9b418853f5c6a7d5f10388f4b69c409f2976ad5e (diff)
downloadpki-e16a87cf4d9bc9b9953638dbf3e68fc496b4a809.tar.gz
pki-e16a87cf4d9bc9b9953638dbf3e68fc496b4a809.tar.xz
pki-e16a87cf4d9bc9b9953638dbf3e68fc496b4a809.zip
Bugzilla Bug #471916 - RA: input validation
git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/trunk@579 c9f7a03b-bd48-0410-a16d-cbbf54688b0b
-rwxr-xr-xpki/base/ra/forms/admin/group/add.cgi2
-rwxr-xr-xpki/base/ra/forms/admin/group/add_member.cgi2
-rwxr-xr-xpki/base/ra/forms/admin/group/add_new.cgi4
-rwxr-xr-xpki/base/ra/forms/admin/group/delete.cgi2
-rwxr-xr-xpki/base/ra/forms/admin/group/delete_member.cgi2
-rwxr-xr-xpki/base/ra/forms/admin/group/index.cgi10
-rwxr-xr-xpki/base/ra/forms/admin/group/read.cgi10
-rwxr-xr-xpki/base/ra/forms/admin/user/index.cgi12
-rwxr-xr-xpki/base/ra/forms/admin/user/read.cgi8
-rwxr-xr-xpki/base/ra/forms/agent/cert/index.cgi18
-rwxr-xr-xpki/base/ra/forms/agent/cert/read.cgi18
-rwxr-xr-xpki/base/ra/forms/agent/cert/revoke.cgi12
-rwxr-xr-xpki/base/ra/forms/agent/cert/submit.cgi16
-rwxr-xr-xpki/base/ra/forms/agent/error.cgi2
-rwxr-xr-xpki/base/ra/forms/agent/index.cgi5
-rwxr-xr-xpki/base/ra/forms/agent/request/add_note.cgi4
-rwxr-xr-xpki/base/ra/forms/agent/request/index.cgi28
-rwxr-xr-xpki/base/ra/forms/agent/request/op.cgi34
-rwxr-xr-xpki/base/ra/forms/agent/request/read.cgi38
-rwxr-xr-xpki/base/ra/forms/ee/agent/enroll.cgi6
-rwxr-xr-xpki/base/ra/forms/ee/agent/submit.cgi2
-rwxr-xr-xpki/base/ra/forms/ee/error.cgi2
-rwxr-xr-xpki/base/ra/forms/ee/request/getcert.cgi10
-rwxr-xr-xpki/base/ra/forms/ee/request/importcert.cgi2
-rwxr-xr-xpki/base/ra/forms/ee/request/status.cgi12
-rwxr-xr-xpki/base/ra/forms/ee/scep/enroll.cgi2
-rwxr-xr-xpki/base/ra/forms/ee/scep/pkiclient.cgi2
-rwxr-xr-xpki/base/ra/forms/ee/scep/submit.cgi2
-rwxr-xr-xpki/base/ra/forms/ee/server/submit.cgi2
-rwxr-xr-xpki/base/ra/forms/ee/user/renew.cgi12
-rwxr-xr-xpki/base/ra/forms/ee/user/submit.cgi4
-rwxr-xr-xpki/base/ra/lib/perl/PKI/Base/Util.pm15
-rw-r--r--pki/base/ra/lib/perl/PKI/Conn/CA.pm6
33 files changed, 163 insertions, 143 deletions
diff --git a/pki/base/ra/forms/admin/group/add.cgi b/pki/base/ra/forms/admin/group/add.cgi
index 756eef3c7..212330d0d 100755
--- a/pki/base/ra/forms/admin/group/add.cgi
+++ b/pki/base/ra/forms/admin/group/add.cgi
@@ -63,7 +63,7 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my $gid = $util->get_val($q->param('gid'));
my $name = $util->get_val($q->param('name'));
diff --git a/pki/base/ra/forms/admin/group/add_member.cgi b/pki/base/ra/forms/admin/group/add_member.cgi
index 711e254d8..d60fe965e 100755
--- a/pki/base/ra/forms/admin/group/add_member.cgi
+++ b/pki/base/ra/forms/admin/group/add_member.cgi
@@ -63,7 +63,7 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my $gid = $util->get_val($q->param('gid'));
my $userid = $util->get_val($q->param('uid'));
diff --git a/pki/base/ra/forms/admin/group/add_new.cgi b/pki/base/ra/forms/admin/group/add_new.cgi
index b0a6004f0..5a1ca7eda 100755
--- a/pki/base/ra/forms/admin/group/add_new.cgi
+++ b/pki/base/ra/forms/admin/group/add_new.cgi
@@ -65,9 +65,9 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my $error = $q->param('error');
- $context{error} = $error;
+ $context{error} = $util->html_encode($error);
my $result = $parser->execute_file_with_context("admin/group/add_new.vm",
\%context);
diff --git a/pki/base/ra/forms/admin/group/delete.cgi b/pki/base/ra/forms/admin/group/delete.cgi
index dbccc20c9..5fb1f22ce 100755
--- a/pki/base/ra/forms/admin/group/delete.cgi
+++ b/pki/base/ra/forms/admin/group/delete.cgi
@@ -63,7 +63,7 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my $gid = $util->get_val($q->param('gid'));
diff --git a/pki/base/ra/forms/admin/group/delete_member.cgi b/pki/base/ra/forms/admin/group/delete_member.cgi
index 0efe72d5e..2e516eeee 100755
--- a/pki/base/ra/forms/admin/group/delete_member.cgi
+++ b/pki/base/ra/forms/admin/group/delete_member.cgi
@@ -62,7 +62,7 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my $gid = $util->get_val($q->param('gid'));
my $userid = $util->get_val($q->param('uid'));
diff --git a/pki/base/ra/forms/admin/group/index.cgi b/pki/base/ra/forms/admin/group/index.cgi
index f41a633f0..a00427f93 100755
--- a/pki/base/ra/forms/admin/group/index.cgi
+++ b/pki/base/ra/forms/admin/group/index.cgi
@@ -66,14 +66,14 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
- my $sp = $util->get_val($q->param('sp'));
+ my $sp = $util->get_alphanum_val($q->param('sp'));
if ($sp eq "") {
$sp = "0";
}
$context{sp} = $sp;
- my $mc = $util->get_val($q->param('mc'));
+ my $mc = $util->get_alphanum_val($q->param('mc'));
if ($mc eq "") {
$mc = "20";
}
@@ -90,8 +90,8 @@ sub process()
my $i = 0;
foreach my $group (@groups) {
$r[$i] = new PKI::RA::GlobalVar(
- getGID => sub { return $group->{'gid'} },
- getName => sub { return $group->{'name'} },
+ getGID => sub { return $util->html_encode($group->{'gid'}) },
+ getName => sub { return $util->html_encode($group->{'name'}) },
);
$i++;
}
diff --git a/pki/base/ra/forms/admin/group/read.cgi b/pki/base/ra/forms/admin/group/read.cgi
index 0191c3912..5a044f826 100755
--- a/pki/base/ra/forms/admin/group/read.cgi
+++ b/pki/base/ra/forms/admin/group/read.cgi
@@ -65,7 +65,7 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my $gid = $util->get_val($q->param('gid'));
@@ -73,8 +73,8 @@ sub process()
$store->open($cfg);
my $ref = $store->read_group($gid);
- $context{gid} = $ref->{'gid'};
- $context{name} = $ref->{'name'};
+ $context{gid} = $util->html_encode($ref->{'gid'});
+ $context{name} = $util->html_encode($ref->{'name'});
my @members = $store->list_all_members($gid);
my @users = $store->list_all_non_members($gid);
@@ -85,7 +85,7 @@ sub process()
my $i = 0;
foreach my $member (@members) {
$r[$i] = new PKI::RA::GlobalVar(
- getUID => sub { return $member->{'uid'} },
+ getUID => sub { return $util->html_encode($member->{'uid'}) },
);
$i++;
}
@@ -96,7 +96,7 @@ sub process()
$i = 0;
foreach my $user (@users) {
$u[$i] = new PKI::RA::GlobalVar(
- getUID => sub { return $user->{'uid'} },
+ getUID => sub { return $util->html_encode($user->{'uid'}) },
);
$i++;
}
diff --git a/pki/base/ra/forms/admin/user/index.cgi b/pki/base/ra/forms/admin/user/index.cgi
index d8ec414c9..9751ee03f 100755
--- a/pki/base/ra/forms/admin/user/index.cgi
+++ b/pki/base/ra/forms/admin/user/index.cgi
@@ -67,15 +67,15 @@ sub process()
my %context;
$context{uid} = $uid;
- my $status = $util->get_val($q->param('status'));
+ my $status = $util->get_alphanum_val($q->param('status'));
$context{status} = $status;
- my $sp = $util->get_val($q->param('sp'));
+ my $sp = $util->get_alphanum_val($q->param('sp'));
if ($sp eq "") {
$sp = "0";
}
$context{sp} = $sp;
- my $mc = $util->get_val($q->param('mc'));
+ my $mc = $util->get_alphanum_val($q->param('mc'));
if ($mc eq "") {
$mc = "20";
}
@@ -92,9 +92,9 @@ sub process()
my $i = 0;
foreach my $user (@users) {
$r[$i] = new PKI::RA::GlobalVar(
- getUID => sub { return $user->{'uid'} },
- getName => sub { return $user->{'name'} },
- getEmail => sub { return $user->{'email'} },
+ getUID => sub { return $util->html_encode($user->{'uid'}) },
+ getName => sub { return $util->html_encode($user->{'name'}) },
+ getEmail => sub { return $util->html_encode($user->{'email'}) },
);
$i++;
}
diff --git a/pki/base/ra/forms/admin/user/read.cgi b/pki/base/ra/forms/admin/user/read.cgi
index 2fd9f2c29..9e57b7868 100755
--- a/pki/base/ra/forms/admin/user/read.cgi
+++ b/pki/base/ra/forms/admin/user/read.cgi
@@ -74,10 +74,10 @@ sub process()
my $ref = $store->read_user($userid);
$store->close();
- $context{userid} = $ref->{'uid'};
- $context{name} = $ref->{'name'};
- $context{email} = $ref->{'email'};
- $context{certificate} = $util->breakline($ref->{'certificate'},40);
+ $context{userid} = $util->html_encode($ref->{'uid'});
+ $context{name} = $util->html_encode($ref->{'name'});
+ $context{email} = $util=>html_encode($ref->{'email'});
+ $context{certificate} = $util->breakline($util->html_encode($ref->{'certificate'}),40);
my $result = $parser->execute_file_with_context("admin/user/read.vm",
\%context);
diff --git a/pki/base/ra/forms/agent/cert/index.cgi b/pki/base/ra/forms/agent/cert/index.cgi
index 8c39e445f..46e5b8c2c 100755
--- a/pki/base/ra/forms/agent/cert/index.cgi
+++ b/pki/base/ra/forms/agent/cert/index.cgi
@@ -64,17 +64,17 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my @roles = $self->get_current_roles($cfg);
my $r = join(",",@roles);
- my $sp = $util->get_val($q->param('sp'));
+ my $sp = $util->get_alphanum_val($q->param('sp'));
if ($sp eq "") {
$sp = "0";
}
$context{sp} = $sp;
- my $mc = $util->get_val($q->param('mc'));
+ my $mc = $util->get_alphanum_val($q->param('mc'));
if ($mc eq "") {
$mc = "20";
}
@@ -91,12 +91,12 @@ sub process()
my $i = 0;
foreach my $cert (@certs) {
$r[$i] = new PKI::RA::GlobalVar(
- getReqId => sub { return $cert->{'rid'} },
- getSerialno => sub { return $cert->{'serialno'} },
- getSubjectDN => sub { return $cert->{'subject_dn'} },
- getCertificate => sub { return $cert->{'certificate'} },
- getApprovedBy => sub { return $cert->{'approved_by'} },
- getCreatedAt => sub { return $cert->{'created_at'}; },
+ getReqId => sub { return $util->html_encode($cert->{'rid'}) },
+ getSerialno => sub { return $util->html_encode($cert->{'serialno'}) },
+ getSubjectDN => sub { return $util->html_encode($cert->{'subject_dn'}) },
+ getCertificate => sub { return $util->html_encode($cert->{'certificate'}) },
+ getApprovedBy => sub { return $util->html_encode($cert->{'approved_by'}) },
+ getCreatedAt => sub { return $util->html_encode($cert->{'created_at'}); },
);
$i++;
}
diff --git a/pki/base/ra/forms/agent/cert/read.cgi b/pki/base/ra/forms/agent/cert/read.cgi
index 038b062c5..43a21eca1 100755
--- a/pki/base/ra/forms/agent/cert/read.cgi
+++ b/pki/base/ra/forms/agent/cert/read.cgi
@@ -62,9 +62,9 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
- my $serialno = $util->get_val($q->param('serialno'));
+ my $serialno = $util->get_alphanum_val($q->param('serialno'));
my $cs = PKI::Base::CertStore->new();
$cs->open($cfg);
@@ -77,14 +77,14 @@ sub process()
$ca->close();
- $context{certificate} = $util->breakline($ref->{'certificate'}, 40);
+ $context{certificate} = $util->breakline($util->html_encode($ref->{'certificate'}), 40);
- $context{serialno} = $ref->{'serialno'};
- $context{subject_dn} = $ref->{'subject_dn'};
- $context{created_at} = $ref->{'created_at'};
- $context{approved_by} = $ref->{'approved_by'};
- $context{rid} = $ref->{'rid'};
- $context{certStatus} = $certStatus;
+ $context{serialno} = $util->html_encode($ref->{'serialno'});
+ $context{subject_dn} = $util->html_encode($ref->{'subject_dn'});
+ $context{created_at} = $util->html_encode($ref->{'created_at'});
+ $context{approved_by} = $util->html_encode($ref->{'approved_by'});
+ $context{rid} = $util->html_encode($ref->{'rid'});
+ $context{certStatus} = $util->html_encode($certStatus);
my $result = $parser->execute_file_with_context("agent/cert/read.vm",
\%context);
diff --git a/pki/base/ra/forms/agent/cert/revoke.cgi b/pki/base/ra/forms/agent/cert/revoke.cgi
index c437d4414..cfe0dc719 100755
--- a/pki/base/ra/forms/agent/cert/revoke.cgi
+++ b/pki/base/ra/forms/agent/cert/revoke.cgi
@@ -61,15 +61,15 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
- my $serialno = $util->get_val($q->param('serialno'));
+ my $serialno = $util->get_alphanum_val($q->param('serialno'));
my $subject_dn = $util->get_val($q->param('subject_dn'));
- my $rid = $util->get_val($q->param('rid'));
+ my $rid = $util->get_alphanum_val($q->param('rid'));
- $context{serialno} = $serialno;
- $context{subject_dn} = $subject_dn;
- $context{rid} = $rid;
+ $context{serialno} = $util->html_encode($serialno);
+ $context{subject_dn} = $util->html_encode($subject_dn);
+ $context{rid} = $util->html_encode($rid);
my $result = $parser->execute_file_with_context("agent/cert/revoke.vm",
\%context);
diff --git a/pki/base/ra/forms/agent/cert/submit.cgi b/pki/base/ra/forms/agent/cert/submit.cgi
index 64ecf02a8..21179c95b 100755
--- a/pki/base/ra/forms/agent/cert/submit.cgi
+++ b/pki/base/ra/forms/agent/cert/submit.cgi
@@ -63,12 +63,12 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
- my $serialno = $util->get_val($q->param('serialno'));
+ my $serialno = $util->get_alphanum_val($q->param('serialno'));
my $subject_dn = $util->get_val($q->param('subject_dn'));
- my $reason = $util->get_val($q->param('reason'));
- my $rid = $util->get_val($q->param('rid'));
+ my $reason = $util->get_alphanum_val($q->param('reason'));
+ my $rid = $util->get_alphanum_val($q->param('rid'));
my $ca = PKI::Conn::CA->new();
$ca->open($cfg);
@@ -79,12 +79,12 @@ sub process()
$queue->open($cfg);
my $ref = $queue->read_request($rid);
- $context{errorString} = $ref->{'errorString'};
+ $context{errorString} = $util->html_encode($ref->{'errorString'});
$queue->close();
- $context{rid} = $rid;
- $context{serialno} = $serialno;
- $context{subject_dn} = $subject_dn;
+ $context{rid} = $util->html_encode($rid);
+ $context{serialno} = $util->html_encode($serialno);
+ $context{subject_dn} = $util->html_encode($subject_dn);
my $result = $parser->execute_file_with_context("agent/cert/submit.vm",
\%context);
diff --git a/pki/base/ra/forms/agent/error.cgi b/pki/base/ra/forms/agent/error.cgi
index 724492c48..fa13365a7 100755
--- a/pki/base/ra/forms/agent/error.cgi
+++ b/pki/base/ra/forms/agent/error.cgi
@@ -62,7 +62,7 @@ sub process()
my %context;
if ($error ne "") {
$context{has_error} = 1;
- $context{'error'} = $error;
+ $context{'error'} = $util->html_encode($error);
}
my $result = $parser->execute_file_with_context("agent/error.vm", \%context);
diff --git a/pki/base/ra/forms/agent/index.cgi b/pki/base/ra/forms/agent/index.cgi
index ae786618a..c8f2040fe 100755
--- a/pki/base/ra/forms/agent/index.cgi
+++ b/pki/base/ra/forms/agent/index.cgi
@@ -31,6 +31,7 @@ use Template::Velocity;
use PKI::Base::Conf;
use PKI::Base::UserStore;
use PKI::Base::Registry;
+use PKI::Base::Util;
use vars qw (@ISA);
use PKI::Service::Op;
@@ -48,6 +49,8 @@ sub process()
my $q = CGI->new();
+ my $util = PKI::Base::Util->new();
+
my $docroot = PKI::Base::Registry->get_docroot();
my $parser = PKI::Base::Registry->get_parser();
my $cfg = PKI::Base::Registry->get_config();
@@ -61,7 +64,7 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my $result = $parser->execute_file_with_context("agent/index.vm",
\%context);
diff --git a/pki/base/ra/forms/agent/request/add_note.cgi b/pki/base/ra/forms/agent/request/add_note.cgi
index 92469ba51..0ffac91c7 100755
--- a/pki/base/ra/forms/agent/request/add_note.cgi
+++ b/pki/base/ra/forms/agent/request/add_note.cgi
@@ -64,9 +64,9 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
- my $id = $util->get_val($q->param('id'));
+ my $id = $util->get_alphanum_val($q->param('id'));
my $note = $util->get_val($q->param('note'));
if ($note eq "") {
diff --git a/pki/base/ra/forms/agent/request/index.cgi b/pki/base/ra/forms/agent/request/index.cgi
index 4f5a5987e..81b25977a 100755
--- a/pki/base/ra/forms/agent/request/index.cgi
+++ b/pki/base/ra/forms/agent/request/index.cgi
@@ -66,24 +66,24 @@ sub process()
$self->debug_log( $cfg, "in request/index.cgi, uid == $uid");
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my @roles = $self->get_current_roles($cfg);
# my $r = join(",",@roles);
- my $status = $util->get_val($q->param('status'));
+ my $status = $util->get_alphanum_val($q->param('status'));
if ($status eq "") {
$context{status} = "";
} else {
- $context{status} = $status;
+ $context{status} = $util->html_encode($status);
}
- my $sp = $util->get_val($q->param('sp'));
+ my $sp = $util->get_alphanum_val($q->param('sp'));
if ($sp eq "") {
$sp = "0";
}
$context{sp} = $sp;
- my $mc = $util->get_val($q->param('mc'));
+ my $mc = $util->get_alphanum_val($q->param('mc'));
if ($mc eq "") {
$mc = "20";
}
@@ -94,7 +94,7 @@ sub process()
my $queue = PKI::Request::Queue->new();
$queue->open($cfg);
my $total = $queue->count_requests_by_roles(\@roles, $status);
- $context{total} = $total;
+ $context{total} = $util->html_encode($total);
my @reqs = $queue->list_requests_by_roles(\@roles, $status, $sp, $mc);
# my @reqs = $queue->list_requests_by_roles($r, $status, $sp, $mc);
@@ -104,14 +104,14 @@ sub process()
my $i = 0;
foreach my $req (@reqs) {
$r[$i] = new PKI::RA::GlobalVar(
- getId => sub { return $req->{'rowid'} },
- getType => sub { return $req->{'type'} },
- getStatus => sub { return $req->{'status'} },
- getError => sub { return $req->{'errorString'} },
- getAssignedTo => sub { return $req->{'assigned_to'} },
- getData => sub { return $req->{'data'}; },
- getCreatedBy => sub { return $req->{'created_by'}; },
- getCreatedAt => sub { return $req->{'created_at'}; },
+ getId => sub { return $util->html_encode($req->{'rowid'}) },
+ getType => sub { return $util->html_encode($req->{'type'}) },
+ getStatus => sub { return $util->html_encode($req->{'status'}) },
+ getError => sub { return $util->html_encode($req->{'errorString'}) },
+ getAssignedTo => sub { return $util->html_encode($req->{'assigned_to'}) },
+ getData => sub { return $util->html_encode($req->{'data'}); },
+ getCreatedBy => sub { return $util->html_encode($req->{'created_by'}); },
+ getCreatedAt => sub { return $util->html_encode($req->{'created_at'}); },
);
$i++;
}
diff --git a/pki/base/ra/forms/agent/request/op.cgi b/pki/base/ra/forms/agent/request/op.cgi
index a475c0d80..b09ac3952 100755
--- a/pki/base/ra/forms/agent/request/op.cgi
+++ b/pki/base/ra/forms/agent/request/op.cgi
@@ -66,10 +66,10 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
- my $type = $util->get_val($q->param('type'));
- my $id = $util->get_val($q->param('id'));
+ my $type = $util->get_alphanum_val($q->param('type'));
+ my $id = $util->get_alphanum_val($q->param('id'));
my $db_st = new Benchmark;
my $queue = PKI::Request::Queue->new();
@@ -109,21 +109,21 @@ sub process()
$queue->close();
my $db_et = new Benchmark;
- $context{data} = $util->breakline($ref->{'data'}, 40);
- $context{output} = $util->breakline($ref->{'output'}, 40);
- $context{serialno} = $ref->{'serialno'};
- $context{type} = $ref->{'type'};
- $context{ip} = $ref->{'ip'};
- $context{note} = $ref->{'note'};
+ $context{data} = $util->breakline($util->html_encode($ref->{'data'}), 40);
+ $context{output} = $util->breakline($util->html_encode($ref->{'output'}), 40);
+ $context{serialno} = $util->html_encode($ref->{'serialno'});
+ $context{type} = $util->html_encode($ref->{'type'});
+ $context{ip} = $util->html_encode($ref->{'ip'});
+ $context{note} = $util->html_encode($ref->{'note'});
$context{note} =~ s/\n/<br\/>/g;
- $context{created_at} = $ref->{'created_at'};
- $context{updated_at} = $ref->{'updated_at'};
- $context{assigned_to} = $ref->{'assigned_to'};
- $context{processed_by} = $ref->{'processed_by'};
- $context{created_by} = $ref->{'created_by'};
- $context{status} = $ref->{'status'};
- $context{errorString} = $ref->{'errorString'};
- $context{id} = $ref->{'rowid'};
+ $context{created_at} = $util->html_encode($ref->{'created_at'});
+ $context{updated_at} = $util->html_encode($ref->{'updated_at'});
+ $context{assigned_to} = $util->html_encode($ref->{'assigned_to'});
+ $context{processed_by} = $util->html_encode($ref->{'processed_by'});
+ $context{created_by} = $util->html_encode($ref->{'created_by'});
+ $context{status} = $util->html_encode($ref->{'status'});
+ $context{errorString} = $util->html_encode($ref->{'errorString'});
+ $context{id} = $util->html_encode($ref->{'rowid'});
my $t_st = new Benchmark;
my $result = $parser->execute_file_with_context("agent/request/op.vm",
diff --git a/pki/base/ra/forms/agent/request/read.cgi b/pki/base/ra/forms/agent/request/read.cgi
index 29c41925f..ed95d5d98 100755
--- a/pki/base/ra/forms/agent/request/read.cgi
+++ b/pki/base/ra/forms/agent/request/read.cgi
@@ -63,43 +63,43 @@ sub process()
my $uid = $self->get_current_uid($cfg);
my %context;
- $context{uid} = $uid;
+ $context{uid} = $util->html_encode($uid);
my @roles = $self->get_current_roles($cfg);
# my $r = join(",",@roles);
- my $id = $util->get_val($q->param('id'));
+ my $id = $util->get_alphanum_val($q->param('id'));
my $queue = PKI::Request::Queue->new();
$queue->open($cfg);
my $ref = $queue->read_request_by_roles(\@roles, $id);
$queue->close();
- $context{data} = $util->breakline($ref->{'data'}, 40);
- $context{output} = $util->breakline($ref->{'output'}, 40);
- $context{meta_info} = $util->breakline($ref->{'meta_info'}, 40);
-
- $context{serialno} = $ref->{'serialno'};
- $context{subject_dn} = $ref->{'subject_dn'};
- $context{type} = $ref->{'type'};
- $context{created_at} = $ref->{'created_at'};
- $context{created_by} = $ref->{'created_by'};
- $context{updated_at} = $ref->{'updated_at'};
- $context{ip} = $ref->{'ip'};
- $context{processed_by} = $ref->{'processed_by'};
- $context{note} = $ref->{'note'};
+ $context{data} = $util->breakline($util->html_encode($ref->{'data'}), 40);
+ $context{output} = $util->breakline($util->html_encode($ref->{'output'}), 40);
+ $context{meta_info} = $util->breakline($util->html_encode($ref->{'meta_info'}), 40);
+
+ $context{serialno} = $util->html_encode($ref->{'serialno'});
+ $context{subject_dn} = $util->html_encode($ref->{'subject_dn'});
+ $context{type} = $util->html_encode($ref->{'type'});
+ $context{created_at} = $util->html_encode($ref->{'created_at'});
+ $context{created_by} = $util->html_encode($ref->{'created_by'});
+ $context{updated_at} = $util->html_encode($ref->{'updated_at'});
+ $context{ip} = $util->html_encode($ref->{'ip'});
+ $context{processed_by} = $util->html_encode($ref->{'processed_by'});
+ $context{note} = $util->html_encode($ref->{'note'});
$context{note} =~ s/\n/<br\/>/g;
- $context{assigned_to} = $ref->{'assigned_to'};
- $context{status} = $ref->{'status'};
+ $context{assigned_to} = $util->html_encode($ref->{'assigned_to'});
+ $context{status} = $util->html_encode($ref->{'status'});
if ($ref->{'status'} eq "OPEN") {
$context{is_open} = 1;
}
if ($ref->{'status'} eq "ERROR") {
$context{is_error} = 1;
}
- $context{errorString} = $ref->{'errorString'};
- $context{id} = $ref->{'rowid'};
+ $context{errorString} = $util->html_encode($ref->{'errorString'});
+ $context{id} = $util->html_encode($ref->{'rowid'});
my $result = $parser->execute_file_with_context("agent/request/read.vm",
\%context);
diff --git a/pki/base/ra/forms/ee/agent/enroll.cgi b/pki/base/ra/forms/ee/agent/enroll.cgi
index 9ca3dafef..4f1af8f16 100755
--- a/pki/base/ra/forms/ee/agent/enroll.cgi
+++ b/pki/base/ra/forms/ee/agent/enroll.cgi
@@ -60,7 +60,7 @@ sub process()
$self->debug_params($cfg, $q);
my $uid = $util->get_val($q->param('uid'));
- my $pin = $util->get_val($q->param('pin'));
+ my $pin = $util->get_alphanum_val($q->param('pin'));
my $csr = $util->get_val($q->param('csr'));
$csr = $util->normalize_csr($csr);
@@ -106,8 +106,8 @@ sub process()
my %context;
$context{cert} = $encoded;
- $context{rid} = $rid;
- $context{subject_dn} = $req->{'subject_dn'};
+ $context{rid} = $util->html_encode($rid);
+ $context{subject_dn} = $util->html_encode($req->{'subject_dn'});
$queue->close();
my $result = $parser->execute_file_with_context("ee/agent/enroll.vm",
diff --git a/pki/base/ra/forms/ee/agent/submit.cgi b/pki/base/ra/forms/ee/agent/submit.cgi
index faf13d4d4..a68242114 100755
--- a/pki/base/ra/forms/ee/agent/submit.cgi
+++ b/pki/base/ra/forms/ee/agent/submit.cgi
@@ -67,7 +67,7 @@ sub process()
"0",
$email);
my %context;
- $context{request_id} = $request_id;
+ $context{request_id} = $util->html_encode($request_id);
$self->debug_log($cfg, "request $request_id created");
$queue->close();
diff --git a/pki/base/ra/forms/ee/error.cgi b/pki/base/ra/forms/ee/error.cgi
index 05e1b0ca8..1417d4b61 100755
--- a/pki/base/ra/forms/ee/error.cgi
+++ b/pki/base/ra/forms/ee/error.cgi
@@ -62,7 +62,7 @@ sub process()
my $error = $util->get_val($q->param('error'));
if ($error ne "") {
$context{has_error} = 1;
- $context{'error'} = $error;
+ $context{'error'} = $util->html_encode($error);
}
my $result = $parser->execute_file_with_context("ee/error.vm", \%context);
diff --git a/pki/base/ra/forms/ee/request/getcert.cgi b/pki/base/ra/forms/ee/request/getcert.cgi
index 264899ab0..411d66a9f 100755
--- a/pki/base/ra/forms/ee/request/getcert.cgi
+++ b/pki/base/ra/forms/ee/request/getcert.cgi
@@ -53,7 +53,7 @@ sub process()
my $util = PKI::Base::Util->new();
- my $id = $util->get_val($q->param('id'));
+ my $id = $util->get_alphanum_val($q->param('id'));
my $docroot = PKI::Base::Registry->get_docroot();
my $parser = PKI::Base::Registry->get_parser();
@@ -67,13 +67,13 @@ sub process()
$queue->close();
my %context;
- $context{id} = $req->{'rowid'};
- $context{serialno} = $req->{'serialno'};
- $context{subject_dn} = $req->{'subject_dn'};
+ $context{id} = $util->html_encode($req->{'rowid'});
+ $context{serialno} = $util->html_encode($req->{'serialno'});
+ $context{subject_dn} = $util->html_encode($req->{'subject_dn'});
if ($req->{'serialno'} eq "unavailable") {
$context{output} = "";
} else {
- $context{output} = "-----BEGIN CERTIFICATE-----\n".$util->breakline($req->{'output'}, 40)."\n-----END CERTIFICATE-----";
+ $context{output} = "-----BEGIN CERTIFICATE-----\n".$util->breakline($util->html_encode($req->{'output'}), 40)."\n-----END CERTIFICATE-----";
}
my $result = $parser->execute_file_with_context("ee/request/getcert.vm",
\%context);
diff --git a/pki/base/ra/forms/ee/request/importcert.cgi b/pki/base/ra/forms/ee/request/importcert.cgi
index 20ef4040e..fdc309746 100755
--- a/pki/base/ra/forms/ee/request/importcert.cgi
+++ b/pki/base/ra/forms/ee/request/importcert.cgi
@@ -53,7 +53,7 @@ sub process()
my $util = PKI::Base::Util->new();
- my $id = $util->get_val($q->param('id'));
+ my $id = $util->get_alphanum_val($q->param('id'));
my $docroot = PKI::Base::Registry->get_docroot();
my $parser = PKI::Base::Registry->get_parser();
diff --git a/pki/base/ra/forms/ee/request/status.cgi b/pki/base/ra/forms/ee/request/status.cgi
index 9cbf8c483..6a3154716 100755
--- a/pki/base/ra/forms/ee/request/status.cgi
+++ b/pki/base/ra/forms/ee/request/status.cgi
@@ -53,7 +53,7 @@ sub process()
my $util = PKI::Base::Util->new();
- my $id = $util->get_val($q->param('id'));
+ my $id = $util->get_alphanum_val($q->param('id'));
my $docroot = PKI::Base::Registry->get_docroot();
my $parser = PKI::Base::Registry->get_parser();
@@ -71,11 +71,11 @@ sub process()
}
my %context;
- $context{id} = $req->{'rowid'};
- $context{type} = $req->{'type'};
- $context{status} = $req->{'status'};
- $context{serialno} = $req->{'serialno'};
- $context{errorString} = $req->{'errorString'};
+ $context{id} = $util->html_encode($req->{'rowid'});
+ $context{type} =$util->html_encode($req->{'type'});
+ $context{status} = $util->html_encode($req->{'status'});
+ $context{serialno} = $util->html_encode($req->{'serialno'});
+ $context{errorString} = $util->html_encode($req->{'errorString'});
my $result = $parser->execute_file_with_context("ee/request/status.vm",
\%context);
diff --git a/pki/base/ra/forms/ee/scep/enroll.cgi b/pki/base/ra/forms/ee/scep/enroll.cgi
index c48c7026a..53291636a 100755
--- a/pki/base/ra/forms/ee/scep/enroll.cgi
+++ b/pki/base/ra/forms/ee/scep/enroll.cgi
@@ -64,7 +64,7 @@ sub process()
my $client_id = $util->get_val($q->param('client_id'));
my $site_id = $util->get_val($q->param('site_id'));
- my $pin = $util->get_val($q->param('pin'));
+ my $pin = $util->get_alphanum_val($q->param('pin'));
my $csr = $util->get_val($q->param('csr'));
my $key = $client_id . "/" . $site_id;
diff --git a/pki/base/ra/forms/ee/scep/pkiclient.cgi b/pki/base/ra/forms/ee/scep/pkiclient.cgi
index 70cfcfbc3..a54558f37 100755
--- a/pki/base/ra/forms/ee/scep/pkiclient.cgi
+++ b/pki/base/ra/forms/ee/scep/pkiclient.cgi
@@ -62,7 +62,7 @@ sub process()
$self->debug_params($cfg, $q);
- my $operation = $util->get_val($q->param('operation'));
+ my $operation = $util->get_alphanum_val($q->param('operation'));
my $message = $util->get_val($q->param('message'));
$message = uri_escape($message);
diff --git a/pki/base/ra/forms/ee/scep/submit.cgi b/pki/base/ra/forms/ee/scep/submit.cgi
index 61e36f278..b3dfd7a5d 100755
--- a/pki/base/ra/forms/ee/scep/submit.cgi
+++ b/pki/base/ra/forms/ee/scep/submit.cgi
@@ -70,7 +70,7 @@ sub process()
"0",
$email);
my %context;
- $context{request_id} = $request_id;
+ $context{request_id} = $util->html_encode($request_id);
$self->debug_log($cfg, "request $request_id created");
$queue->close();
diff --git a/pki/base/ra/forms/ee/server/submit.cgi b/pki/base/ra/forms/ee/server/submit.cgi
index 258eb462b..4916033ee 100755
--- a/pki/base/ra/forms/ee/server/submit.cgi
+++ b/pki/base/ra/forms/ee/server/submit.cgi
@@ -72,7 +72,7 @@ sub process()
"0",
$email);
my %context;
- $context{request_id} = $request_id;
+ $context{request_id} = $util->html_encode($request_id);
$self->debug_log($cfg, "request $request_id created");
$queue->close();
diff --git a/pki/base/ra/forms/ee/user/renew.cgi b/pki/base/ra/forms/ee/user/renew.cgi
index 682904854..63d646ec9 100755
--- a/pki/base/ra/forms/ee/user/renew.cgi
+++ b/pki/base/ra/forms/ee/user/renew.cgi
@@ -136,16 +136,16 @@ sub process()
}
my %context;
- $context{request_id} = $new_request;
+ $context{request_id} = $util->html_encode($new_request);
$self->debug_log($cfg, "request $new_request created");
$queue->close();
$self->debug_log( $cfg, "after renewl read/create request $new_request");
- $context{data} = $util->breakline($ref->{'data'}, 40);
- $context{output} = $util->breakline($ref->{'output'}, 40);
- $context{serialno} = $ref->{'serialno'};
- $context{host} = $host;
- $context{port} = $port;
+ $context{data} = $util->breakline($util->html_encode($ref->{'data'}), 40);
+ $context{output} = $util->breakline($util->html_encode($ref->{'output'}), 40);
+ $context{serialno} = $util->html_encode($ref->{'serialno'});
+ $context{host} = $util->html_encode($host);
+ $context{port} = $util->html_encode($port);
#print $q->redirect("/ee/request/getcert.cgi?id=$new_request");
my $result = $parser->execute_file_with_context("ee/user/renew.vm",
diff --git a/pki/base/ra/forms/ee/user/submit.cgi b/pki/base/ra/forms/ee/user/submit.cgi
index 09f8f45a0..26c900e00 100755
--- a/pki/base/ra/forms/ee/user/submit.cgi
+++ b/pki/base/ra/forms/ee/user/submit.cgi
@@ -58,7 +58,7 @@ sub process()
my $fullname = $util->get_val($q->param('cn'));
my $site_id = $util->get_val($q->param('site_id'));
my $email = $util->get_val($q->param('email'));
- my $csr_type = $util->get_val($q->param('csr_type'));
+ my $csr_type = $util->get_alphanum_val($q->param('csr_type'));
my $csr = $util->get_val($q->param('csr'));
$csr = $util->normalize_csr($csr);
@@ -81,7 +81,7 @@ sub process()
"0",
$email);
my %context;
- $context{request_id} = $request_id;
+ $context{request_id} = $util->html_encode($request_id);
$self->debug_log($cfg, "request $request_id created");
$queue->close();
my $db_et = new Benchmark;
diff --git a/pki/base/ra/lib/perl/PKI/Base/Util.pm b/pki/base/ra/lib/perl/PKI/Base/Util.pm
index 2cf6abfaa..c4b0cb1e9 100755
--- a/pki/base/ra/lib/perl/PKI/Base/Util.pm
+++ b/pki/base/ra/lib/perl/PKI/Base/Util.pm
@@ -26,6 +26,7 @@ package PKI::Base::Util;
use Time::Local;
use DBI;
+use HTML::Entities;
#######################################
# Constructs a util
@@ -54,6 +55,13 @@ sub get_string_val()
return $s;
}
+sub get_alphanum_val()
+{
+ my ($self, $s) = @_;
+ $s =~ s/[^A-Za-z0-9 ]*//g;
+ return $s;
+}
+
sub normalize_csr()
{
my ($self, $s) = @_;
@@ -120,4 +128,11 @@ sub test()
print $o->to_str($o->to_hash("5=1;c=2")) . "\n";
}
+sub html_encode()
+{
+ my ($self, $s) = @_;
+ return HTML::Entities::encode($s);
+}
+
+
1;
diff --git a/pki/base/ra/lib/perl/PKI/Conn/CA.pm b/pki/base/ra/lib/perl/PKI/Conn/CA.pm
index b8cd7813b..01de23222 100644
--- a/pki/base/ra/lib/perl/PKI/Conn/CA.pm
+++ b/pki/base/ra/lib/perl/PKI/Conn/CA.pm
@@ -77,9 +77,11 @@ sub enroll {
my $tmpfile = "/tmp/tmp-$rid-$$";
my $params = "profileId=" . $profile_id . "&" .
- "requestor_name=" . $requestor_name . "&" .
+ "requestor_name=" .
+ URI::Escape::uri_escape("$requestor_name") . "&" .
"cert_request_type=" . $cert_request_type . "&" .
- "subject=" . $subject . "&" .
+ "subject=" .
+ URI::Escape::uri_escape("$subject") . "&" .
"cert_request=" .
URI::Escape::uri_escape("$cert_request") . "&" .
"xmlOutput=true";