Portfolio Security & Risk Analysis

wordpress.org/plugins/tc-portfolio

Portfolio is a custom post type based Responsive Filterable Portfolio showing plugin. Users can create stunning portfolio WordPress site using Shortc …

200 active installs v1.4 PHP + WP 3.0.1+ Updated May 19, 2019
filterable-portfolioportfolioportfolio-galleryresponsive-filterable-portfolioresponsive-portfolio
85
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is Portfolio Safe to Use in 2026?

Generally Safe

Score 85/100

Portfolio has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 6yr ago
Risk Assessment

The "tc-portfolio" plugin v1.4 presents a mixed security posture. On the positive side, the plugin exhibits good practices regarding SQL queries, utilizing prepared statements exclusively, and has no recorded vulnerability history, indicating a relatively clean past. The static analysis shows no identified dangerous functions, file operations, external HTTP requests, or bundled libraries, which are all favorable security indicators. Furthermore, the attack surface is limited to a single shortcode with no apparent direct exposure through AJAX or REST API without authorization.

However, significant concerns arise from the complete lack of output escaping and the absence of nonce and capability checks across its entry points. While the static analysis did not reveal any taint flows or direct SQL injection vulnerabilities, the lack of output escaping means that any data rendered to the user interface, even if it originates from a trusted source, could be susceptible to Cross-Site Scripting (XSS) attacks if not properly sanitized before being passed to the shortcode or any other output mechanism. The absence of capability checks on the shortcode is also a significant weakness, as it implies that any logged-in user, regardless of their role or permissions, could potentially execute the functionality associated with this shortcode, leading to unintended actions or information disclosure.

In conclusion, while the "tc-portfolio" plugin v1.4 avoids some common severe vulnerabilities like raw SQL or known CVEs, the widespread lack of output escaping and authorization checks on its sole entry point is a critical oversight. This creates a substantial risk of XSS and potential privilege escalation or unauthorized functionality execution, despite the seemingly small attack surface. The plugin requires immediate attention to address these fundamental security flaws.

Key Concerns

  • Unescaped output detected
  • Missing nonce checks
  • Missing capability checks
Vulnerabilities
None known

Portfolio Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Code Analysis
Analyzed Mar 16, 2026

Portfolio Code Analysis

Dangerous Functions
0
Raw SQL Queries
0
0 prepared
Unescaped Output
13
0 escaped
Nonce Checks
0
Capability Checks
0
File Operations
0
External Requests
0
Bundled Libraries
0

Output Escaping

0% escaped13 total outputs
Attack Surface

Portfolio Attack Surface

Entry Points1
Unprotected0

Shortcodes 1

[tc-portfolio] public\tc-view.php:131
WordPress Hooks 7
actionwp_footerpublic\tc-view.php:33
actionwp_enqueue_scriptstc-portfolio.php:52
actionadmin_enqueue_scriptstc-portfolio.php:57
actionadmin_menutc-portfolio.php:61
filtergettexttc-portfolio.php:82
actionactivated_plugintc-portfolio.php:106
filtersingle_templatetc-portfolio.php:118
Maintenance & Trust

Portfolio Maintenance & Trust

Maintenance Signals

WordPress version tested5.2.24
Last updatedMay 19, 2019
PHP min version
Downloads22K

Community Trust

Rating62/100
Number of ratings8
Active installs200
Developer Profile

Portfolio Developer Profile

themesCode

4 plugins · 250 total installs

71
trust score
Avg Security Score
88/100
Avg Patch Time
176 days
View full developer profile
Detection Fingerprints

How We Detect Portfolio

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/tc-portfolio/assets/css/tc-portfolio-style.css/wp-content/plugins/tc-portfolio/assets/css/tcode-grid.css/wp-content/plugins/tc-portfolio/vendors/magnific-popup/magnific-popup.css/wp-content/plugins/tc-portfolio/assets/js/tc-custom.js/wp-content/plugins/tc-portfolio/assets/css/tc-portfolio-admin.css
Script Paths
/wp-content/plugins/tc-portfolio/vendors/isotope/isotope.pkgd.min.js/wp-content/plugins/tc-portfolio/vendors/magnific-popup/jquery.magnific-popup.min.js/wp-content/plugins/tc-portfolio/assets/js/tc-custom.js
Version Parameters
tc-portfolio/assets/css/tc-portfolio-style.css?ver=tc-portfolio/assets/css/tcode-grid.css?ver=tc-portfolio/vendors/magnific-popup/magnific-popup.css?ver=tc-portfolio/assets/js/tc-custom.js?ver=tc-portfolio/assets/css/tc-portfolio-admin.css?ver=

HTML / DOM Fingerprints

CSS Classes
tcportfolio_filterstc_overlaytcportfolio_areatcportfolio-container
Data Attributes
data-filter
JS Globals
themesCode_Settings_API_Test
Shortcode Output
<ul class="tcportfolio_filters"><li class="active" data-filter="*"><li data-filter=".<div class="tcportfolio-container">
FAQ

Frequently Asked Questions about Portfolio