GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider Security & Risk Analysis

wordpress.org/plugins/gs-portfolio

Showcase your work with GS Portfolio – create filterable grids, sliders & stylish layouts anywhere on your site using simple shortcodes.

300 active installs v3.0.7 PHP 5.6+ WP 4.3+ Updated Jun 22, 2026
best-portfolio-plugin-wordpressfilterable-portfolioportfolio-gridportfolio-sliderwordpress-portfolio-plugin
99
A · Safe
CVEs total2
Unpatched0
Last CVEDec 11, 2024
Safety Verdict

Is GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider Safe to Use in 2026?

Generally Safe

Score 99/100

GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider has a strong security track record. Known vulnerabilities have been patched promptly. It's a solid choice for most WordPress installations.

2 known CVEsLast CVE: Dec 11, 2024Updated 2mo ago
Risk Assessment

The "gs-portfolio" plugin v3.0.3 exhibits a mixed security posture. While it demonstrates good practices with a high percentage of prepared SQL statements and properly escaped output, there are significant concerns. The plugin exposes 5 AJAX handlers without authentication checks, creating a substantial attack surface for unauthorized actions. Taint analysis reveals 4 flows with unsanitized paths, including 3 of high severity, indicating potential vulnerabilities where user-supplied data could be improperly processed, leading to security risks like cross-site scripting or unintended code execution. The plugin's history of 2 medium-severity CVEs, both related to Cross-site Scripting, coupled with the taint analysis findings, suggests a recurring pattern of input sanitization weaknesses. Although there are no currently unpatched CVEs, the presence of high-severity taint flows and unprotected AJAX handlers necessitates careful attention.

Key Concerns

  • Unprotected AJAX handlers
  • High severity taint flows
  • Medium severity CVE history
Vulnerabilities
2 published

GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider Security Vulnerabilities

CVEs by Year

1 CVE in 2023
2023
1 CVE in 2024
2024
Patched Has unpatched

Severity Breakdown

Medium
2

2 total CVEs

CVE-2024-11765medium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

WordPress Portfolio Plugin – A Plugin for Making Filterable Portfolio Grid, Portfolio Slider and more <= 1.6.3 - Authenticated (Contributor+) Stored Cross-Site Scripting

Dec 11, 2024 Patched in 1.6.4 (1d)
CVE-2023-0540medium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

GS Filterable Portfolio <= 1.6.0 - Authenticated (Contributor+) Stored Cross-Site Scripting via Shortcode

Jan 30, 2023 Patched in 1.6.1 (358d)
Version History

GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider Release Timeline

v3.0.7Current
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v1.6.4
v1.6.31 CVE
Code Analysis
Analyzed Mar 16, 2026

GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider Code Analysis

Dangerous Functions
0
Raw SQL Queries
3
28 prepared
Unescaped Output
61
303 escaped
Nonce Checks
20
Capability Checks
27
File Operations
9
External Requests
5
Bundled Libraries
1

Bundled Libraries

Select2

SQL Query Safety

90% prepared31 total queries

Output Escaping

83% escaped364 total outputs
Data Flows · Security
4 unsanitized

Data Flow Analysis

5 flows4 with unsanitized paths
delete_shortcodes (includes\shortcode-builder\builder.php:624)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
5 unprotected

GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider Attack Surface

Entry Points21
Unprotected5

AJAX Handlers 20

authwp_ajax_gsportfolio_import_portfolio_dataincludes\demo-data\dummy-data.php:33
authwp_ajax_gsportfolio_remove_portfolio_dataincludes\demo-data\dummy-data.php:35
authwp_ajax_gsportfolio_import_shortcode_dataincludes\demo-data\dummy-data.php:37
authwp_ajax_gsportfolio_remove_shortcode_dataincludes\demo-data\dummy-data.php:39
authwp_ajax_gsportfolio_import_all_dataincludes\demo-data\dummy-data.php:41
authwp_ajax_gsportfolio_remove_all_dataincludes\demo-data\dummy-data.php:43
authwp_ajax_gsportfolio_export_dataincludes\import-export.php:17
authwp_ajax_gsportfolio_import_dataincludes\import-export.php:18
authwp_ajax_dhf_sortincludes\metabox.php:13
authwp_ajax_gsportfolio_create_shortcodeincludes\shortcode-builder\builder.php:25
authwp_ajax_gsportfolio_clone_shortcodeincludes\shortcode-builder\builder.php:26
authwp_ajax_gsportfolio_get_shortcodeincludes\shortcode-builder\builder.php:27
authwp_ajax_gsportfolio_update_shortcodeincludes\shortcode-builder\builder.php:28
authwp_ajax_gsportfolio_delete_shortcodesincludes\shortcode-builder\builder.php:29
authwp_ajax_gsportfolio_temp_save_shortcode_settingsincludes\shortcode-builder\builder.php:30
authwp_ajax_gsportfolio_get_shortcodesincludes\shortcode-builder\builder.php:31
authwp_ajax_gsportfolio_get_shortcode_prefincludes\shortcode-builder\builder.php:33
authwp_ajax_gsportfolio_save_shortcode_prefincludes\shortcode-builder\builder.php:34
authwp_ajax_update_gsportfolio_orderincludes\sortable.php:28
authwp_ajax_update_gsportfolio_taxonomy_orderincludes\sortable.php:31

Shortcodes 1

[gsportfolio] includes\shortcode.php:12
WordPress Hooks 93
actionswitch_themeincludes\appsero\Insights.php:132
actionswitch_themeincludes\appsero\Insights.php:133
actionadmin_footerincludes\appsero\Insights.php:145
actionadmin_noticesincludes\appsero\Insights.php:162
actionadmin_initincludes\appsero\Insights.php:165
filtercron_schedulesincludes\appsero\Insights.php:171
actionwp_footerincludes\asset-generator\gs-asset-generator-base.php:27
actionpost_updatedincludes\asset-generator\gs-asset-generator-base.php:28
actionsave_postincludes\asset-generator\gs-asset-generator-base.php:29
filterwidget_update_callbackincludes\asset-generator\gs-asset-generator-base.php:30
actionupdate_option_sidebars_widgetsincludes\asset-generator\gs-asset-generator-base.php:31
actiongsp_shortcode_createdincludes\asset-generator\gs-asset-generator-base.php:32
actiongsp_shortcode_updatedincludes\asset-generator\gs-asset-generator-base.php:33
actiongsp_shortcode_deletedincludes\asset-generator\gs-asset-generator-base.php:34
actiongsp_preference_updateincludes\asset-generator\gs-asset-generator-base.php:35
filtermanage_edit-gs-portfolio_columnsincludes\column.php:12
actionmanage_posts_custom_columnincludes\column.php:13
filtermanage_edit-gs-portfolio_sortable_columnsincludes\column.php:14
actioninitincludes\cpt.php:11
actioninitincludes\cpt.php:12
actionafter_setup_themeincludes\cpt.php:13
filterwidget_textincludes\cpt.php:136
actionadmin_initincludes\demo-data\dummy-data.php:29
actiongsportfolio_shortcode_submenuincludes\demo-data\dummy-data.php:31
actionedit_post_gs_portfolio_sliderincludes\demo-data\dummy-data.php:46
actiongsportfolio_dummy_attachments_process_startincludes\demo-data\dummy-data.php:49
actiongsportfolio_dummy_attachments_process_finishedincludes\demo-data\dummy-data.php:59
actiongsportfolio_dummy_terms_process_finishedincludes\demo-data\dummy-data.php:65
actiongsportfolio_dummy_portfolios_process_finishedincludes\demo-data\dummy-data.php:71
actiongsportfolio_dummy_shortcodes_process_startincludes\demo-data\dummy-data.php:82
actiongsportfolio_dummy_shortcodes_process_finishedincludes\demo-data\dummy-data.php:92
filterhttp_request_argsincludes\demo-data\dummy-data.php:768
actionadmin_noticesincludes\functions.php:296
actionadmin_menuincludes\gs-common-pages\gs-plugins-common-pages.php:16
actionadmin_enqueue_scriptsincludes\gs-common-pages\gs-plugins-common-pages.php:17
actioninitincludes\hooks.php:12
actioninitincludes\hooks.php:13
actionadmin_initincludes\hooks.php:14
actionplugins_loadedincludes\hooks.php:15
filterarchive_templateincludes\hooks.php:16
actionin_admin_headerincludes\hooks.php:17
filtersingle_templateincludes\hooks.php:18
filterwp_kses_allowed_htmlincludes\hooks.php:19
actionwp_handle_upload_prefilterincludes\hooks.php:20
filterget_user_option_meta-box-order_gs-portfolioincludes\hooks.php:21
filterupload_dirincludes\hooks.php:30
actiongsportfolio_shortcode_submenuincludes\import-export.php:19
actionplugins_loadedincludes\init.php:9
actioninitincludes\init.php:45
actioninitincludes\integrations\integration-beaver.php:24
actiondivi_extensions_initincludes\integrations\integration-divi.php:28
actionet_builder_modules_loadedincludes\integrations\integration-divi.php:36
actionwp_enqueue_scriptsincludes\integrations\integration-divi.php:37
actionwp_headincludes\integrations\integration-divi.php:38
actionelementor/widgets/registerincludes\integrations\integration-elementor.php:27
actionelementor/elements/categories_registeredincludes\integrations\integration-elementor.php:28
actionelementor/editor/after_enqueue_scriptsincludes\integrations\integration-elementor.php:30
actionelementor/editor/after_enqueue_stylesincludes\integrations\integration-elementor.php:31
actionelementor/preview/enqueue_stylesincludes\integrations\integration-elementor.php:33
actionelementor/preview/enqueue_scriptsincludes\integrations\integration-elementor.php:34
actioninitincludes\integrations\integration-gutenberg.php:24
actionenqueue_block_editor_assetsincludes\integrations\integration-gutenberg.php:25
actionplugins_loadedincludes\integrations\integration-oxygen.php:25
actioninitincludes\integrations\integration-oxygen.php:26
actionct_builder_startincludes\integrations\integration-oxygen.php:33
actionct_builder_endincludes\integrations\integration-oxygen.php:41
actionwp_enqueue_scriptsincludes\integrations\integration-oxygen.php:65
actiontd_global_afterincludes\integrations\integration-tagdiv.php:24
actionwp_enqueue_scriptsincludes\integrations\integration-tagdiv.php:25
actionadmin_enqueue_scriptsincludes\integrations\integration-tagdiv.php:26
actionvc_before_initincludes\integrations\integration-wpb-vc.php:23
actionadmin_footerincludes\integrations\integration-wpb-vc.php:24
actionadd_meta_boxesincludes\metabox.php:11
actionsave_postincludes\metabox.php:12
actionplugins_loadedincludes\plugin.php:58
actionplugins_loadedincludes\scripts.php:39
actionwp_enqueue_scriptsincludes\scripts.php:40
actionadmin_enqueue_scriptsincludes\scripts.php:41
actionadmin_headincludes\scripts.php:42
actionwp_footerincludes\scripts.php:400
actionadmin_menuincludes\shortcode-builder\builder.php:21
actionadmin_enqueue_scriptsincludes\shortcode-builder\builder.php:22
actionwp_enqueue_scriptsincludes\shortcode-builder\builder.php:23
actiontemplate_includeincludes\shortcode-builder\builder.php:36
actionshow_admin_barincludes\shortcode-builder\builder.php:37
actionadmin_menuincludes\sortable.php:15
actionadmin_initincludes\sortable.php:18
filterplugins_loadedincludes\sortable.php:21
filterget_terms_orderbyincludes\sortable.php:24
filterterms_clausesincludes\sortable.php:25
actionadmin_enqueue_scriptsincludes\sortable.php:34
filterposts_orderbyincludes\sortable.php:37
actioninitincludes\template-loader.php:26
Maintenance & Trust

GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider Maintenance & Trust

Maintenance Signals

WordPress version tested7.0.2
Last updatedJun 22, 2026
PHP min version5.6
Downloads36K

Community Trust

Rating88/100
Number of ratings37
Active installs300
Developer Profile

GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider Developer Profile

GS Plugins

19 plugins · 40K total installs

76
trust score
Avg Security Score
96/100
Avg Patch Time
173 days
View full developer profile
Detection Fingerprints

How We Detect GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/gs-portfolio/assets/css/frontend.css/wp-content/plugins/gs-portfolio/assets/js/frontend.js
Script Paths
/wp-content/plugins/gs-portfolio/assets/js/frontend.js
Version Parameters
gs-portfolio/assets/css/frontend.css?ver=gs-portfolio/assets/js/frontend.js?ver=

HTML / DOM Fingerprints

CSS Classes
gs_portfolio_areags-portfolio-single
Data Attributes
data-gs-portfolio-id
JS Globals
gs_portfolio_options
REST Endpoints
/wp-json/gs-portfolio/v1
Shortcode Output
[gsportfolio
FAQ

Frequently Asked Questions about GS Portfolio – WordPress Portfolio Plugin with Filterable Portfolio Grid and Portfolio Slider