NSFW (Not Safe For Work) Security & Risk Analysis

wordpress.org/plugins/nsfw

Wrap the NSFW content in [nsfw][/nsfw] to hide it. Readers can click on the "Show" link to read the hidden content.

30 active installs v1.0 PHP + WP 3.0.1+ Updated Aug 19, 2010
javascriptnot-safe-for-worknsfwpost
85
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is NSFW (Not Safe For Work) Safe to Use in 2026?

Generally Safe

Score 85/100

NSFW (Not Safe For Work) has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 15yr ago
Risk Assessment

The "nsfw" plugin v1.0 exhibits a strong security posture based on the provided static analysis. The absence of any AJAX handlers, REST API routes, shortcodes, or cron events significantly limits the plugin's attack surface, and there are no identified entry points that lack authentication or permission checks. Furthermore, the code signals reveal no dangerous functions, file operations, or external HTTP requests, and all SQL queries are properly prepared, which is an excellent practice. The lack of vulnerability history, including CVEs, also suggests a history of secure development or no prior significant security issues being publicly reported.

However, a notable concern arises from the output escaping. With one total output and 0% properly escaped, this indicates a potential for Cross-Site Scripting (XSS) vulnerabilities. Any data processed by the plugin and directly outputted to the browser without proper sanitization or escaping could be manipulated by attackers to inject malicious scripts. While the taint analysis shows no specific flows with unsanitized paths, the general lack of output escaping across all outputs is a significant risk that needs immediate attention. The absence of nonce and capability checks, while not immediately risky due to the limited attack surface, would become a severe issue if new entry points were introduced without proper security measures.

In conclusion, the plugin has a very small attack surface and employs good practices regarding SQL queries and avoiding dangerous functions. The vulnerability history is clean, which is a positive sign. The primary weakness lies in the complete lack of output escaping, presenting a tangible risk of XSS. Addressing this specific issue should be the highest priority to improve the plugin's overall security.

Key Concerns

  • Output escaping missing on all outputs
  • No capability checks
  • No nonce checks
Vulnerabilities
None known

NSFW (Not Safe For Work) Security Vulnerabilities

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

NSFW (Not Safe For Work) Code Analysis

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

Output Escaping

0% escaped1 total outputs
Attack Surface

NSFW (Not Safe For Work) Attack Surface

Entry Points0
Unprotected0
WordPress Hooks 1
actionadmin_headnsfw.php:20
Maintenance & Trust

NSFW (Not Safe For Work) Maintenance & Trust

Maintenance Signals

WordPress version tested3.0.5
Last updatedAug 19, 2010
PHP min version
Downloads3K

Community Trust

Rating0/100
Number of ratings0
Active installs30
Developer Profile

NSFW (Not Safe For Work) Developer Profile

zingming

4 plugins · 250 total installs

84
trust score
Avg Security Score
85/100
Avg Patch Time
30 days
View full developer profile
Detection Fingerprints

How We Detect NSFW (Not Safe For Work)

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/nsfw/nsfwquicktag.js
Script Paths
/wp-content/plugins/nsfw/nsfwquicktag.js

HTML / DOM Fingerprints

Shortcode Output
<div> <p>NSFW (Not Safe For Work): &nbsp; <a href="javascript:;" onclick="var noise = this.parentNode.parentNode.getElementsByTagName('div')[0]; if (noise.style.display == 'none') { noise.style.display = ''; this.innerHTML = 'Hide'; noise.style.paddingBottom = '1em'; this.parentNode.style.marginBottom = '0.5em'; } else { noise.style.display = 'none'; this.innerHTML = 'Show'; }">Show</a></p> <div style="display:none;">
FAQ

Frequently Asked Questions about NSFW (Not Safe For Work)