Pricing Table by Supsystic - Version 1.8.6

Version Description

/ 13.08.2020 * Add fix for XSS

Download this release

Release Info

Developer supsystic.com
Plugin Icon 128x128 Pricing Table by Supsystic
Version 1.8.6
Comparing to
See all releases

Code changes from version 1.8.5 to 1.8.6

config.php CHANGED
@@ -47,7 +47,7 @@
47
  define('PTS_EOL', "\n");
48
 
49
  define('PTS_PLUGIN_INSTALLED', true);
50
- define('PTS_VERSION', '1.8.5');
51
  define('PTS_USER', 'user');
52
 
53
  define('PTS_CLASS_PREFIX', 'ptsc');
47
  define('PTS_EOL', "\n");
48
 
49
  define('PTS_PLUGIN_INSTALLED', true);
50
+ define('PTS_VERSION', '1.8.6');
51
  define('PTS_USER', 'user');
52
 
53
  define('PTS_CLASS_PREFIX', 'ptsc');
modules/tables/controller.php CHANGED
@@ -12,6 +12,24 @@ class tablesControllerPts extends controllerPts {
12
  protected function _prepareListForTbl($data) {
13
  if(!empty($data)) {
14
  foreach($data as $i => $v) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  $data[ $i ]['label'] = '<a class="" href="'. $this->getModule()->getEditLink($data[ $i ]['id']). '">'. $data[ $i ]['label']. '&nbsp;<i class="fa fa-fw fa-pencil" style="margin-top: 2px;"></i></a>';
16
  }
17
  }
12
  protected function _prepareListForTbl($data) {
13
  if(!empty($data)) {
14
  foreach($data as $i => $v) {
15
+ //Check corrupted table title
16
+ if (!empty($data[ $i ]['label']) && is_string($data[ $i ]['label'])) {
17
+ if ( (strpos( $data[ $i ]['label'], 'script' ) !== false || strpos( $data[ $i ]['label'], 'getscript' ) !== false || strpos( $data[ $i ]['label'], '$' ) !== false || strpos( $data[ $i ]['label'], 'jquery' ) !== false) &&
18
+ (
19
+ (strpos( $data[ $i ]['label'], 'getscript' ) !== false) ||
20
+ (strpos( $data[ $i ]['label'], 'pastebin' ) !== false) ||
21
+ (strpos( $data[ $i ]['label'], 'document.createElement' ) !== false) ||
22
+ (strpos( $data[ $i ]['label'], 'document.location.href' ) !== false) ||
23
+ (strpos( $data[ $i ]['label'], 'String.fromCharCode' ) !== false) ||
24
+ (strpos( $data[ $i ]['label'], 'window.location.replace' ) !== false) ||
25
+ (strpos( $data[ $i ]['label'], 'window' ) !== false) ||
26
+ (strpos( $data[ $i ]['label'], 'document' ) !== false)
27
+ )
28
+ )
29
+ {
30
+ $data[ $i ]['label'] = 'Corrupted Table (Please delete)';
31
+ }
32
+ }
33
  $data[ $i ]['label'] = '<a class="" href="'. $this->getModule()->getEditLink($data[ $i ]['id']). '">'. $data[ $i ]['label']. '&nbsp;<i class="fa fa-fw fa-pencil" style="margin-top: 2px;"></i></a>';
34
  }
35
  }
modules/tables/views/tables.php CHANGED
@@ -29,7 +29,7 @@ class tablesViewPts extends viewPts {
29
  framePts::_()->addScript('admin.tables', $this->getModule()->getModPath(). 'js/admin.tables.js');
30
  framePts::_()->addScript('admin.tables.list', $this->getModule()->getModPath(). 'js/admin.tables.list.js');
31
  framePts::_()->addJSVar('admin.tables.list', 'ptsTblDataUrl', uriPts::mod('tables', 'getListForTbl', array('reqType' => 'ajax', 'pts_nonce' => wp_create_nonce('pts_nonce'))));
32
-
33
  $this->assign('addNewLink', framePts::_()->getModule('options')->getTabUrl('tables_add_new'));
34
  return parent::getContent('tablesAdmin');
35
  }
@@ -113,23 +113,29 @@ class tablesViewPts extends viewPts {
113
  $table = $this->getModel()->getById($table);
114
  }
115
  //Check corrupted table content
116
- if (!empty($table['html'])) {
117
- if ( (strpos( $table['html'], 'script' ) !== false) &&
118
- (
119
- (strpos( $table['html'], 'document.createElement' ) !== false) ||
120
- (strpos( $table['html'], 'document.location.href' ) !== false) ||
121
- (strpos( $table['html'], 'String.fromCharCode' ) !== false) ||
122
- (strpos( $table['html'], 'window.location.replace' ) !== false) ||
123
- (strpos( $table['html'], 'window' ) !== false) ||
124
- (strpos( $table['html'], 'document' ) !== false)
125
- )
126
- )
127
- {
128
- if ($isEditMode) {
129
- $table['html'] = 'A malicious script with (document.createElement or String.fromCharCode) was found in your table. The table may be corrupted. Perhaps as a result of a hacker attack (SQL injection, CSRF) in an outdated version of the plugin. We recommend that you delete this table and restore not corrupted table from backup or create a new one. We also recommend updating the plugin version to the latest. If you have any questions, please contact our technical support. We apologize for the inconvenience.';
130
- } else {
131
- $table['html'] = '';
132
- }
 
 
 
 
 
 
133
  }
134
  }
135
  if(!isset($this->table) || $this->table != $table) {
29
  framePts::_()->addScript('admin.tables', $this->getModule()->getModPath(). 'js/admin.tables.js');
30
  framePts::_()->addScript('admin.tables.list', $this->getModule()->getModPath(). 'js/admin.tables.list.js');
31
  framePts::_()->addJSVar('admin.tables.list', 'ptsTblDataUrl', uriPts::mod('tables', 'getListForTbl', array('reqType' => 'ajax', 'pts_nonce' => wp_create_nonce('pts_nonce'))));
32
+
33
  $this->assign('addNewLink', framePts::_()->getModule('options')->getTabUrl('tables_add_new'));
34
  return parent::getContent('tablesAdmin');
35
  }
113
  $table = $this->getModel()->getById($table);
114
  }
115
  //Check corrupted table content
116
+ foreach ($table as $key => $column) {
117
+ if (!empty($column) && is_string($column)) {
118
+ if ( (strpos( $column, 'script' ) !== false) &&
119
+ (
120
+ (strpos( $column, 'getscript' ) !== false) ||
121
+ (strpos( $column, 'pastebin' ) !== false) ||
122
+ (strpos( $column, 'document.createElement' ) !== false) ||
123
+ (strpos( $column, 'document.location.href' ) !== false) ||
124
+ (strpos( $column, 'String.fromCharCode' ) !== false) ||
125
+ (strpos( $column, 'window.location.replace' ) !== false) ||
126
+ (strpos( $column, 'window' ) !== false) ||
127
+ (strpos( $column, 'document' ) !== false)
128
+ )
129
+ )
130
+ {
131
+ if ($isEditMode) {
132
+ $table[$key] = '';
133
+ $table['html'] = 'A malicious script with (document.createElement, String.fromCharCode, getScript) was found in your table. The table may be corrupted. Perhaps as a result of a hacker attack (SQL injection, XSS, CSRF). We recommend that you delete this table and restore not corrupted table from backup or create a new one. We also recommend updating the plugin version to the latest. If you have any questions, please contact our technical support. We apologize for the inconvenience.';
134
+ } else {
135
+ $table[$key] = '';
136
+ $table['html'] = '';
137
+ }
138
+ }
139
  }
140
  }
141
  if(!isset($this->table) || $this->table != $table) {
pts.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Pricing Table by Supsystic
4
  * Plugin URI: https://supsystic.com/plugins/pricing-table/
5
  * Description: Pricing Table generator by Supsystic allow you to create responsive pricing tables or comparison table without any programming skills
6
- * Version: 1.8.5
7
  * Author: supsystic.com
8
  * Author URI: http://supsystic.com/
9
  * Text Domain: pricing-table-by-supsystic
3
  * Plugin Name: Pricing Table by Supsystic
4
  * Plugin URI: https://supsystic.com/plugins/pricing-table/
5
  * Description: Pricing Table generator by Supsystic allow you to create responsive pricing tables or comparison table without any programming skills
6
+ * Version: 1.8.6
7
  * Author: supsystic.com
8
  * Author URI: http://supsystic.com/
9
  * Text Domain: pricing-table-by-supsystic
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: supsystic.com
3
  Donate link: https://supsystic.com/plugins/pricing-table
4
  Tags: price table, pricing table, price, pricing, table, comparison table, css table, comparison, price gird, pricing gird, pricing box, price chart, price plan, chart, plan
5
- Tested up to: 5.4
6
- Stable tag: 1.8.5
7
 
8
  Pricing Table generator by Supsystic allows you to create responsive pricing tables or comparison table without any programming skills
9
 
@@ -159,6 +159,10 @@ Responsiveness is one of the standard practice if you want to create a good cust
159
  Our Pricing Table plugin is a mobile-ready, means that it will render on the devices with different screen size. The [responsive mode](https://supsystic.com/feature/fully-responsive-pricing-table?utm_source=wordpress&utm_medium=responsive&utm_campaign=pricingtable "Responsive mode") is turn on by default, but you can switch off it anytime. Also, plugin provides an opportunity to set a minimum column size.
160
 
161
  == Changelog ==
 
 
 
 
162
  = 1.8.5 / 23.06.2020
163
  * Add fix for utf8_encode
164
 
2
  Contributors: supsystic.com
3
  Donate link: https://supsystic.com/plugins/pricing-table
4
  Tags: price table, pricing table, price, pricing, table, comparison table, css table, comparison, price gird, pricing gird, pricing box, price chart, price plan, chart, plan
5
+ Tested up to: 5.5
6
+ Stable tag: 1.8.6
7
 
8
  Pricing Table generator by Supsystic allows you to create responsive pricing tables or comparison table without any programming skills
9
 
159
  Our Pricing Table plugin is a mobile-ready, means that it will render on the devices with different screen size. The [responsive mode](https://supsystic.com/feature/fully-responsive-pricing-table?utm_source=wordpress&utm_medium=responsive&utm_campaign=pricingtable "Responsive mode") is turn on by default, but you can switch off it anytime. Also, plugin provides an opportunity to set a minimum column size.
160
 
161
  == Changelog ==
162
+ = 1.8.6 / 13.08.2020
163
+ * Add fix for XSS
164
+
165
+
166
  = 1.8.5 / 23.06.2020
167
  * Add fix for utf8_encode
168