Skip to content

Commit 2431ea2

Browse files
Merge pull request #88 from PaystackOSS/chore/sanitize-form-fieds
Chore/sanitize form fieds
2 parents 73732d3 + 3318c82 commit 2431ea2

9 files changed

+1166
-1083
lines changed

admin/class-paystack-forms-admin.php

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function kkd_pff_paystack_txncheck($name, $txncharge)
3939
}
4040
function kkd_pff_paystack_setting_page()
4141
{
42-
?>
42+
?>
4343
<div class="wrap">
4444
<h1>Paystack Forms Settings</h1>
4545

@@ -112,7 +112,7 @@ function kkd_pff_paystack_setting_page()
112112

113113
</form>
114114
</div>
115-
<?php
115+
<?php
116116
}
117117
add_action('init', 'register_kkd_pff_paystack');
118118
function register_kkd_pff_paystack()
@@ -231,34 +231,34 @@ function kkd_pff_paystack_dashboard_table_data($column, $post_id)
231231
$table = $wpdb->prefix . KKD_PFF_PAYSTACK_TABLE;
232232

233233
switch ($column) {
234-
case 'shortcode':
235-
echo '<span class="shortcode">
234+
case 'shortcode':
235+
echo '<span class="shortcode">
236236
<input type="text" class="large-text code" value="[pff-paystack id=&quot;' . $post_id . '&quot;]"
237237
readonly="readonly" onfocus="this.select();"></span>';
238238

239-
break;
240-
case 'payments':
239+
break;
240+
case 'payments':
241241

242-
$count_query = 'select count(*) from ' . $table . ' WHERE post_id = "' . $post_id . '" AND paid = "1"';
243-
$num = $wpdb->get_var($count_query);
242+
$count_query = $wpdb->prepare("SELECT COUNT(*) FROM {$table} WHERE post_id = %d AND paid = '1'", $post_id);
243+
$num = $wpdb->get_var($count_query);
244244

245-
echo '<u><a href="' . admin_url('admin.php?page=submissions&form=' . $post_id) . '">' . $num . '</a></u>';
246-
break;
247-
default:
248-
break;
245+
echo '<u><a href="' . admin_url('admin.php?page=submissions&form=' . $post_id) . '">' . $num . '</a></u>';
246+
break;
247+
default:
248+
break;
249249
}
250250
}
251251
add_filter('default_content', 'kkd_pff_paystack_editor_content', 10, 2);
252252

253253
function kkd_pff_paystack_editor_content($content, $post)
254254
{
255255
switch ($post->post_type) {
256-
case 'paystack_form':
257-
$content = '[text name="Phone Number"]';
258-
break;
259-
default:
260-
$content = '';
261-
break;
256+
case 'paystack_form':
257+
$content = '[text name="Phone Number"]';
258+
break;
259+
default:
260+
$content = '';
261+
break;
262262
}
263263

264264
return $content;
@@ -284,18 +284,18 @@ function kkd_pff_paystack_editor_help_metabox_details($post)
284284

285285
</div>
286286

287-
<?php
287+
<?php
288288
}
289289
function kkd_pff_paystack_editor_shortcode_details($post)
290290
{
291-
?>
291+
?>
292292
<p class="description">
293293
<label for="wpcf7-shortcode">Copy this shortcode and paste it into your post, page, or text widget content:</label>
294294
<span class="shortcode wp-ui-highlight">
295-
<input type="text" id="wpcf7-shortcode" onfocus="this.select();" readonly="readonly" class="large-text code" value="[pff-paystack id=&quot;<?php echo $post->ID; ?>&quot;]"></span>
295+
<input type="text" id="wpcf7-shortcode" onfocus="this.select();" readonly="readonly" class="large-text code" value="[pff-paystack id=&quot;<?php echo esc_html($post->ID); ?>&quot;]"></span>
296296
</p>
297297

298-
<?php
298+
<?php
299299
}
300300

301301
add_action('add_meta_boxes', 'kkd_pff_paystack_editor_add_extra_metaboxes');
@@ -767,7 +767,7 @@ public function enqueue_scripts()
767767
/**
768768
* Add settings action link to the plugins page.
769769
*
770-
* @since 1.0.0
770+
* @since 1.0.0
771771
*/
772772
public function add_action_links($links)
773773
{
@@ -800,17 +800,17 @@ function kkd_pff_paystack_payment_submissions()
800800
$data = $exampleListTable->prepare_items(); ?>
801801
<div id="welcome-panel" class="welcome-panel">
802802
<div class="welcome-panel-content">
803-
<h1 style="margin: 0px;"><?php echo $obj->post_title; ?> Payments </h1>
803+
<h1 style="margin: 0px;"><?php echo esc_html($obj->post_title); ?> Payments </h1>
804804
<p class="about-description">All payments made for this form</p>
805805
<?php if ($data > 0) {
806-
?>
806+
?>
807807

808808
<form action="<?php echo admin_url('admin-post.php'); ?>" method="post">
809809
<input type="hidden" name="action" value="kkd_pff_export_excel">
810-
<input type="hidden" name="form_id" value="<?php echo $id; ?>">
810+
<input type="hidden" name="form_id" value="<?php echo esc_html($id); ?>">
811811
<button type="submit" class="button button-primary button-hero load-customize">Export Data to Excel</button>
812812
</form>
813-
<?php
813+
<?php
814814
} ?>
815815

816816
<br><br>
@@ -820,7 +820,7 @@ function kkd_pff_paystack_payment_submissions()
820820
<div id="icon-users" class="icon32"></div>
821821
<?php $exampleListTable->display(); ?>
822822
</div>
823-
<?php
823+
<?php
824824
}
825825
}
826826
add_action('admin_post_kkd_pff_export_excel', 'Kkd_pff_export_excel');
@@ -843,7 +843,9 @@ function Kkd_pff_export_excel()
843843
}
844844
$table = $wpdb->prefix . KKD_PFF_PAYSTACK_TABLE;
845845
$data = array();
846-
$alldbdata = $wpdb->get_results("SELECT * FROM $table WHERE (post_id = '" . $post_id . "' AND paid = '1') ORDER BY `id` ASC");
846+
$table = sanitize_text_field($table);
847+
848+
$alldbdata = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$table} WHERE post_id = %d AND paid = '1' ORDER BY `id` ASC", $post_id));
847849
$i = 0;
848850

849851
if (count($alldbdata) > 0) {
@@ -927,7 +929,7 @@ public function list_table_page()
927929
<div id="icon-users" class="icon32"></div>
928930
<?php $exampleListTable->display(); ?>
929931
</div>
930-
<?php
932+
<?php
931933
}
932934
}
933935

@@ -970,8 +972,7 @@ public function prepare_items()
970972

971973
$table = $wpdb->prefix . KKD_PFF_PAYSTACK_TABLE;
972974
$data = array();
973-
$alldbdata = $wpdb->get_results("SELECT * FROM $table WHERE (post_id = '" . $post_id . "' AND paid = '1')");
974-
975+
$alldbdata = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$table} WHERE post_id = %d AND paid = '1'", $post_id));
975976
foreach ($alldbdata as $key => $dbdata) {
976977
$newkey = $key + 1;
977978
if ($dbdata->txn_code_2 != "") {
@@ -1055,15 +1056,15 @@ private function table_data($data)
10551056
public function column_default($item, $column_name)
10561057
{
10571058
switch ($column_name) {
1058-
case 'id':
1059-
case 'email':
1060-
case 'amount':
1061-
case 'txn_code':
1062-
case 'metadata':
1063-
case 'date':
1064-
return $item[$column_name];
1065-
default:
1066-
return print_r($item, true);
1059+
case 'id':
1060+
case 'email':
1061+
case 'amount':
1062+
case 'txn_code':
1063+
case 'metadata':
1064+
case 'date':
1065+
return $item[$column_name];
1066+
default:
1067+
return print_r($item, true);
10671068
}
10681069
}
10691070

includes/class-paystack-forms-activator.php

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
class Kkd_Pff_Paystack_Activator
44
{
55

6-
public static function activate()
7-
{
8-
global $wpdb;
9-
$version = get_option('kkd_db_version', '1.0');
10-
$table_name = $wpdb->prefix . KKD_PFF_PAYSTACK_TABLE;
6+
public static function activate()
7+
{
8+
global $wpdb;
9+
$version = get_option('kkd_db_version', '1.0');
10+
$table_name = $wpdb->prefix . KKD_PFF_PAYSTACK_TABLE;
11+
$table_name = sanitize_text_field($table_name);
12+
$charset_collate = $wpdb->get_charset_collate();
1113

12-
$charset_collate = $wpdb->get_charset_collate();
13-
14-
$sql = "CREATE TABLE IF NOT EXISTS `" . $table_name . "` (
14+
$sql = "CREATE TABLE IF NOT EXISTS `" . $table_name . "` (
1515
id int(11) NOT NULL AUTO_INCREMENT,
1616
post_id int(11) NOT NULL,
1717
user_id int(11) NOT NULL,
@@ -30,11 +30,11 @@ public static function activate()
3030
UNIQUE KEY id (id),PRIMARY KEY (id)
3131
) $charset_collate;";
3232

33-
include_once ABSPATH . 'wp-admin/includes/upgrade.php';
34-
dbDelta($sql);
33+
include_once ABSPATH . 'wp-admin/includes/upgrade.php';
34+
dbDelta($sql);
3535

36-
if (version_compare($version, '2.0') < 0) {
37-
$sql = "CREATE TABLE IF NOT EXISTS `" . $table_name . "` (
36+
if (version_compare($version, '2.0') < 0) {
37+
$sql = "CREATE TABLE IF NOT EXISTS `" . $table_name . "` (
3838
id int(11) NOT NULL AUTO_INCREMENT,
3939
post_id int(11) NOT NULL,
4040
user_id int(11) NOT NULL,
@@ -53,34 +53,36 @@ public static function activate()
5353
UNIQUE KEY id (id),PRIMARY KEY (id)
5454
) $charset_collate;";
5555

56-
dbDelta($sql);
56+
dbDelta($sql);
5757

58-
update_option('kkd_db_version', '2.0');
59-
}
58+
update_option('kkd_db_version', '2.0');
59+
}
6060

6161

62-
$row = $wpdb->get_results(
63-
"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
64-
WHERE table_name = '" . $table_name . "' AND column_name = 'plan'"
65-
);
66-
if (empty($row)) {
67-
$wpdb->query("ALTER TABLE `" . $table_name . "` ADD `plan` VARCHAR(255) NOT NULL AFTER `paid`;");
68-
}
62+
$query = $wpdb->prepare(
63+
"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = %s AND column_name = 'plan'",
64+
$table_name
65+
);
66+
67+
$row = $wpdb->get_results($query);
68+
if (empty($row)) {
69+
$wpdb->query("ALTER TABLE `" . $table_name . "` ADD `plan` VARCHAR(255) NOT NULL AFTER `paid`;");
70+
}
6971

70-
$row1 = $wpdb->get_results(
71-
"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
72+
$row1 = $wpdb->get_results(
73+
"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
7274
WHERE table_name = '" . $table_name . "' AND column_name = 'txn_code_2'"
73-
);
74-
if (empty($row1)) {
75-
$wpdb->query("ALTER TABLE `" . $table_name . "` ADD `txn_code_2` VARCHAR(255) DEFAULT '' NULL AFTER `txn_code`;");
76-
}
75+
);
76+
if (empty($row1)) {
77+
$wpdb->query("ALTER TABLE `" . $table_name . "` ADD `txn_code_2` VARCHAR(255) DEFAULT '' NULL AFTER `txn_code`;");
78+
}
7779

78-
$row1 = $wpdb->get_results(
79-
"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
80+
$row1 = $wpdb->get_results(
81+
"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
8082
WHERE table_name = '" . $table_name . "' AND column_name = 'paid_at'"
81-
);
82-
if (empty($row1)) {
83-
$wpdb->query("ALTER TABLE `" . $table_name . "` ADD `paid_at` timestamp AFTER `created_at`;");
84-
}
85-
}
83+
);
84+
if (empty($row1)) {
85+
$wpdb->query("ALTER TABLE `" . $table_name . "` ADD `paid_at` timestamp AFTER `created_at`;");
86+
}
87+
}
8688
}

includes/paystack-invoice.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function kkd_format_metadata($data)
4040

4141
global $wpdb;
4242
$table = $wpdb->prefix.KKD_PFF_PAYSTACK_TABLE;
43-
$record = $wpdb->get_results("SELECT * FROM $table WHERE (txn_code = '".$code."')");
43+
$record = $wpdb->get_results($wpdb->prepare("SELECT * FROM %s WHERE txn_code = %s", $table, $code));
4444

4545
if (array_key_exists("0", $record)) {
4646
get_header();
@@ -57,7 +57,7 @@ function kkd_format_metadata($data)
5757
<article class="post-4 page type-page status-publish hentry" id="post-4">
5858
<form action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" enctype="multipart/form-data" class="j-forms retry-form" id="pf-form" novalidate="">
5959
<input type="hidden" name="action" value="kkd_pff_paystack_retry_action">
60-
<input type="hidden" name="code" value="<?php echo $code; ?>" />
60+
<input type="hidden" name="code" value="<?php echo esc_html($code);; ?>" />
6161
<div class="content">
6262

6363
<div class="divider-text gap-top-20 gap-bottom-45">
@@ -67,17 +67,17 @@ function kkd_format_metadata($data)
6767
<div class="j-row">
6868
<div class="span12 unit">
6969
<label class="label inline">Email:</label>
70-
<strong><a href="mailto:<?php echo $dbdata->email; ?>"><?php echo $dbdata->email; ?></a></strong>
70+
<strong><a href="mailto:<?php echo esc_html($dbdata->email); ?>"><?php echo esc_html($dbdata->email); ?></a></strong>
7171
</div>
7272
<div class="span12 unit">
7373
<label class="label inline">Amount:</label>
74-
<strong><?php echo $currency.number_format($dbdata->amount); ?></strong>
74+
<strong><?php echo esc_html($currency.number_format($dbdata->amount)); ?></strong>
7575
</div>
76-
<?php echo kkd_format_metadata($dbdata->metadata); ?>
76+
<?php echo esc_html(kkd_format_metadata($dbdata->metadata)); ?>
7777

7878
<div class="span12 unit">
7979
<label class="label inline">Date:</label>
80-
<strong><?php echo $dbdata->created_at; ?></strong>
80+
<strong><?php echo esc_html($dbdata->created_at); ?></strong>
8181
</div>
8282
<?php if($dbdata->paid == 1) {?>
8383
<div class="span12 unit">
@@ -103,8 +103,8 @@ function kkd_format_metadata($data)
103103
</div>
104104
</main>
105105
</div>
106-
<?php
107-
get_footer();
106+
<?php
107+
get_footer();
108108
}else{
109109
die('Invoice code invalid');
110110
}

paystack-forms.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ function insertSelectCountries() {
186186

187187
//
188188
</script>
189-
<?php
189+
<?php
190190
}
191191
}
192192
// add_action( 'init', 'kkd_pff_paystack_invoice_url_rewrite' );

0 commit comments

Comments
 (0)