Print My Blog – Print, PDF, & eBook Converter WordPress Plugin Security & Risk Analysis

wordpress.org/plugins/print-my-blog

Make printing your blog easy and impressive. For you & your visitors. One post or thousands.

8K active installs v3.27.13 PHP 5.4+ WP 4.7+ Updated Mar 11, 2026
backupebookpdfprintprint-button
89
A · Safe
CVEs total6
Unpatched0
Last CVEAug 14, 2025
Safety Verdict

Is Print My Blog – Print, PDF, & eBook Converter WordPress Plugin Safe to Use in 2026?

Generally Safe

Score 89/100

Print My Blog – Print, PDF, & eBook Converter WordPress Plugin has a strong security track record. Known vulnerabilities have been patched promptly.

6 known CVEsLast CVE: Aug 14, 2025Updated 23d ago
Risk Assessment

The 'print-my-blog' plugin exhibits a mixed security posture. While it demonstrates good practices in several areas, such as a high percentage of SQL queries using prepared statements and a significant number of properly escaped outputs, there are notable concerns that require attention. The presence of two unprotected AJAX handlers presents a direct entry point for potential unauthorized actions. Additionally, the static analysis reveals a flow with unsanitized paths, which, although not classified as critical or high severity in the taint analysis, warrants investigation as it could lead to security vulnerabilities if exploited with specific inputs.

The plugin's vulnerability history is a significant red flag. With a total of six known CVEs, including a past critical and a high severity vulnerability, it indicates a recurring pattern of exploitable weaknesses. The common types of past vulnerabilities such as Cross-site Scripting, Missing Authorization, CSRF, and SSRF suggest that the plugin has historically struggled with proper input validation and access control. While there are currently no unpatched vulnerabilities, the history suggests a need for ongoing vigilance and rigorous security audits.

In conclusion, 'print-my-blog' v3.27.13 has several strengths in its codebase, particularly in its handling of SQL and output sanitization. However, the unprotected AJAX handlers, unsanitized path flows, and a history of critical and high-severity vulnerabilities necessitate a cautious approach. The plugin's attack surface includes unprotected entry points, and its past vulnerability trends suggest a persistent need for more robust security implementations to prevent future exploitation.

Key Concerns

  • Unprotected AJAX handlers
  • Flows with unsanitized paths
  • Past critical severity CVE
  • Past high severity CVE
  • Dangerous function unserialize
  • Bundled outdated Freemius v1.0
Vulnerabilities
6

Print My Blog – Print, PDF, & eBook Converter WordPress Plugin Security Vulnerabilities

CVEs by Year

1 CVE in 2019
2019
1 CVE in 2021
2021
1 CVE in 2022
2022
2 CVEs in 2024
2024
1 CVE in 2025
2025
Patched Has unpatched

Severity Breakdown

Critical
1
High
1
Medium
4

6 total CVEs

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

Print My Blog <= 3.27.9 - Authenticated (Contributor+) Stored Cross-Site Scripting

Aug 14, 2025 Patched in 3.27.10 (6d)
CVE-2024-37271medium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Print My Blog <= 3.27.0 - Authenticated (Author+) Stored Cross-Site Scripting

Jun 27, 2024 Patched in 3.27.1 (6d)
CVE-2024-33907medium · 5.3Missing Authorization

Print My Blog – Print, PDF, & eBook Converter WordPress Plugin <= 3.26.2 - Missing Authorization

Apr 29, 2024 Patched in 3.26.3 (9d)

Print My Blog – Print, PDF, & eBook Converter <= 3.15.8 - Unprotected AJAX Actions

Jun 20, 2022 Patched in 3.15.9 (582d)
CVE-2021-24636high · 8.1Cross-Site Request Forgery (CSRF)

Print My Blog – Print, PDF, & eBook Converter WordPress Plugin <= 3.4.1 - Cross-Site Request Forgery

Aug 18, 2021 Patched in 3.4.2 (888d)
CVE-2019-11565critical · 9.8Server-Side Request Forgery (SSRF)

Print My Blog <= 1.6.6 - Server-Side Request Forgery

Apr 27, 2019 Patched in 1.6.7 (1732d)
Code Analysis
Analyzed Mar 16, 2026

Print My Blog – Print, PDF, & eBook Converter WordPress Plugin Code Analysis

Dangerous Functions
1
Raw SQL Queries
6
16 prepared
Unescaped Output
133
369 escaped
Nonce Checks
25
Capability Checks
9
File Operations
6
External Requests
4
Bundled Libraries
2

Dangerous Functions Found

unserializereturn unserialize($data);src\Twine\helpers\Array2.php:110

Bundled Libraries

Select2Freemius1.0

SQL Query Safety

73% prepared22 total queries

Output Escaping

74% escaped502 total outputs
Data Flows
5 unsanitized

Data Flow Analysis

6 flows5 with unsanitized paths
handlePostSearch (src\PrintMyBlog\controllers\Ajax.php:210)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
2 unprotected

Print My Blog – Print, PDF, & eBook Converter WordPress Plugin Attack Surface

Entry Points22
Unprotected2

AJAX Handlers 9

authwp_ajax_wptrt_dismiss_noticesrc\mnelson4\AdminNotices\Dismiss.php:67
authwp_ajax_pmb_update_project_langsrc\PrintMyBlog\compatibility\plugins\Wpml.php:93
authwp_ajax_pmb_post_searchsrc\PrintMyBlog\controllers\Ajax.php:106
authwp_ajax_pmb_add_print_materialsrc\PrintMyBlog\controllers\Ajax.php:107
authwp_ajax_pmb_reduce_creditssrc\PrintMyBlog\controllers\Ajax.php:108
authwp_ajax_pmb_report_errorsrc\PrintMyBlog\controllers\Ajax.php:109
authwp_ajax_pmb_duplicate_print_materialsrc\PrintMyBlog\controllers\Ajax.php:110
authwp_ajax_dashboard-widgetssrc\Twine\admin\news\DashboardNews.php:85
authwp_ajax_dashboard-widgetssrc\Twine\admin\news\DashboardNews.php:86

Shortcodes 13

[vrview] src\PrintMyBlog\compatibility\plugins\WpVrView.php:28
[pmb_print_buttons] src\PrintMyBlog\controllers\Shortcodes.php:27
[pmb_print_page_url] src\PrintMyBlog\controllers\Shortcodes.php:31
[pmb_project_title] src\PrintMyBlog\controllers\Shortcodes.php:35
[pmb_toc] src\PrintMyBlog\controllers\Shortcodes.php:39
[pmb_title_page] src\PrintMyBlog\controllers\Shortcodes.php:43
[pmb_byline] src\PrintMyBlog\controllers\Shortcodes.php:47
[pmb_footnote] src\PrintMyBlog\controllers\Shortcodes.php:51
[pmb_web_only_text] src\PrintMyBlog\controllers\Shortcodes.php:55
[pmb_web_only_blocks] src\PrintMyBlog\controllers\Shortcodes.php:59
[pmb_print_only_text] src\PrintMyBlog\controllers\Shortcodes.php:63
[pmb_print_only_blocks] src\PrintMyBlog\controllers\Shortcodes.php:67
[pmb_project_setting] src\PrintMyBlog\controllers\Shortcodes.php:71
WordPress Hooks 112
actionpmb_pdf_generation_startdesigns\epub\classic\functions.php:4
actionwp_enqueue_scriptsdesigns\epub\classic\functions.php:9
filter\PrintMyBlog\services\generators\EpubGenerator::enqueueStylesAndScripts $cssdesigns\epub\classic\functions.php:15
actionpmb_pdf_generation_startdesigns\pdf\digital\buurma\functions.php:4
actionwp_enqueue_scriptsdesigns\pdf\digital\buurma\functions.php:9
filterPrintMyBlog\services\generators\PdfGenerator->printScripts prince_js_varsdesigns\pdf\digital\buurma\functions.php:10
actionpmb_pdf_generation_startdesigns\pdf\digital\mayer\functions.php:4
actionwp_enqueue_scriptsdesigns\pdf\digital\mayer\functions.php:9
actionpmb_pdf_generation_startdesigns\pdf\print\classic\functions.php:5
actionwp_enqueue_scriptsdesigns\pdf\print\classic\functions.php:10
actionpmb_pdf_generation_startdesigns\pdf\print\haller\functions.php:4
actionwp_enqueue_scriptsdesigns\pdf\print\haller\functions.php:9
actionpmb_pdf_generation_startdesigns\word\classic\functions.php:4
actionwp_enqueue_scriptsdesigns\word\classic\functions.php:9
actionadmin_noticesprintmyblog.php:44
actionadmin_noticesprintmyblog.php:76
actionadmin_noticesprintmyblog.php:114
actiontemplate_redirectprintmyblog.php:219
filterwp_using_themesprintmyblog.php:221
filtertemplate_directoryprintmyblog.php:224
filterstylesheet_directoryprintmyblog.php:227
actioninitprintmyblog.php:230
actionadmin_noticessrc\mnelson4\AdminNotices\Notices.php:45
actionadmin_enqueue_scriptssrc\mnelson4\AdminNotices\Notices.php:48
filteracf/shortcode/allow_in_block_themes_outside_contentsrc\PrintMyBlog\compatibility\plugins\AdvancedCustomFields.php:16
actionloop_startsrc\PrintMyBlog\compatibility\plugins\AdvancedExcerpt.php:19
actionwp_enqueue_scriptssrc\PrintMyBlog\compatibility\plugins\CoBlocks.php:18
actionwp_enqueue_scriptssrc\PrintMyBlog\compatibility\plugins\ContactForm7.php:18
filterrest_pre_dispatchsrc\PrintMyBlog\compatibility\plugins\EasyFootnotes.php:37
filterthe_contentsrc\PrintMyBlog\compatibility\plugins\EasyFootnotes.php:48
filterthe_contentsrc\PrintMyBlog\compatibility\plugins\EasyFootnotes.php:49
actionwp_enqueue_scriptssrc\PrintMyBlog\compatibility\plugins\GoogleLanguageTranslator.php:20
actionwp_enqueue_scriptssrc\PrintMyBlog\compatibility\plugins\GoogleLanguageTranslator.php:21
actionpmb_print_page_ready_instructions_startsrc\PrintMyBlog\compatibility\plugins\GTranslate.php:18
actionpmb_pro_print_page_window_endsrc\PrintMyBlog\compatibility\plugins\GTranslate.php:19
actionwp_enqueue_scriptssrc\PrintMyBlog\compatibility\plugins\Hustle.php:19
filterPrintMyBlog\domain\DefaultDesignTemplates->getGenericDesignFormsrc\PrintMyBlog\compatibility\plugins\JetPack.php:20
filterwp_lazy_loading_enabledsrc\PrintMyBlog\compatibility\plugins\LazyLoadingFeaturePlugin.php:25
filterwp_lazy_loading_enabledsrc\PrintMyBlog\compatibility\plugins\LazyLoadingFeaturePlugin.php:39
filterpmpro_has_membership_access_filtersrc\PrintMyBlog\compatibility\plugins\PaidMembershipsPro.php:15
filtertablepress_table_js_optionssrc\PrintMyBlog\compatibility\plugins\TablePress.php:33
actionPrintMyBlog\system\Activation->install donesrc\PrintMyBlog\compatibility\plugins\Wpml.php:64
actionpmb__project_edit_content__filters_topsrc\PrintMyBlog\compatibility\plugins\Wpml.php:66
filter\PrintMyBlog\controllers\Ajax->handlePostSearch $query_paramssrc\PrintMyBlog\compatibility\plugins\Wpml.php:69
filter\PrintMyBlog\controllers\Admin::enqueueScripts pmb_ajaxsrc\PrintMyBlog\compatibility\plugins\Wpml.php:72
filter\PrintMyBlog\controllers\Admin::enqueueScripts site_urlsrc\PrintMyBlog\compatibility\plugins\Wpml.php:78
actionpmb_content_items__project-item-title endsrc\PrintMyBlog\compatibility\plugins\Wpml.php:86
filter\PrintMyBlog\services\generators\ProjectFileGeneratorBase->sortPostsAndAttachSections $sectionssrc\PrintMyBlog\compatibility\plugins\Wpml.php:89
actionproject_edit_generate__under_headersrc\PrintMyBlog\compatibility\plugins\Wpml.php:90
action\PrintMyBlog\services\generators\ProjectFileGeneratorBase->getHtmlFrom before_ob_startsrc\PrintMyBlog\compatibility\plugins\Wpml.php:91
action\PrintMyBlog\services\generators\ProjectFileGeneratorBase->getHtmlFrom after_get_cleansrc\PrintMyBlog\compatibility\plugins\Wpml.php:92
actionadmin_enqueue_scriptssrc\PrintMyBlog\compatibility\plugins\Wpml.php:96
actionPrintMyBlog\controllers\Admin->saveProjectCustomizeDesign donesrc\PrintMyBlog\compatibility\plugins\Wpml.php:99
actionPrintMyBlog\controllers\Admin->saveProjectMetadata donesrc\PrintMyBlog\compatibility\plugins\Wpml.php:100
actionwp_after_insert_postsrc\PrintMyBlog\compatibility\plugins\Wpml.php:104
filterposts_joinsrc\PrintMyBlog\compatibility\plugins\Wpml.php:297
filterposts_wheresrc\PrintMyBlog\compatibility\plugins\Wpml.php:298
filterposts_requestsrc\PrintMyBlog\compatibility\plugins\Wpml.php:299
filter\PrintMyBlog\controllers\Ajax->handlePostSearch $postssrc\PrintMyBlog\compatibility\plugins\Wpml.php:302
filterposts_joinsrc\PrintMyBlog\compatibility\plugins\Wpml.php:355
filterposts_wheresrc\PrintMyBlog\compatibility\plugins\Wpml.php:356
actionparse_querysrc\PrintMyBlog\compatibility\plugins\Wpml.php:357
filterwpseo_sitemap_index_linkssrc\PrintMyBlog\compatibility\plugins\YoastSeo.php:20
actionadmin_menusrc\PrintMyBlog\controllers\Admin.php:235
actionadmin_enqueue_scriptssrc\PrintMyBlog\controllers\Admin.php:237
filterpost_row_actionssrc\PrintMyBlog\controllers\Admin.php:238
filterpage_row_actionssrc\PrintMyBlog\controllers\Admin.php:244
actionpost_submitbox_misc_actionssrc\PrintMyBlog\controllers\Admin.php:250
actionenqueue_block_editor_assetssrc\PrintMyBlog\controllers\Admin.php:251
actionwp_mail_failedsrc\PrintMyBlog\controllers\Admin.php:505
actionadmin_print_footer_scriptssrc\PrintMyBlog\controllers\Admin.php:1608
filtergettextsrc\PrintMyBlog\controllers\Admin.php:1609
actionadmin_initsrc\PrintMyBlog\controllers\Admin.php:1742
actionadmin_initsrc\PrintMyBlog\controllers\Admin.php:1744
actionwp_enqueue_scriptssrc\PrintMyBlog\controllers\Common.php:23
actionadmin_enqueue_scriptssrc\PrintMyBlog\controllers\Common.php:28
filterthe_contentsrc\PrintMyBlog\controllers\Frontend.php:104
filtertemplate_redirectsrc\PrintMyBlog\controllers\Frontend.php:117
filtertemplate_includesrc\PrintMyBlog\controllers\Frontend.php:123
actionwp_enqueue_scriptssrc\PrintMyBlog\controllers\Frontend.php:229
filterthe_contentsrc\PrintMyBlog\controllers\GutenbergBlock.php:24
filtertemplate_includesrc\PrintMyBlog\controllers\LegacyPrintPage.php:33
actionwp_enqueue_scriptssrc\PrintMyBlog\controllers\LegacyPrintPage.php:124
actionwp_enqueue_scriptssrc\PrintMyBlog\services\generators\HtmlBaseGenerator.php:50
filtershould_load_block_editor_scripts_and_stylessrc\PrintMyBlog\services\generators\HtmlBaseGenerator.php:52
actionpmb_pro_print_windowsrc\PrintMyBlog\services\generators\HtmlBaseGenerator.php:53
actionwp_print_scriptssrc\PrintMyBlog\services\generators\PdfGenerator.php:129
actionoxygen_enqueue_frontend_scriptssrc\PrintMyBlog\services\generators\PdfGenerator.php:167
actionwp_headsrc\PrintMyBlog\services\generators\PdfGenerator.php:169
filterpost_password_requiredsrc\PrintMyBlog\services\generators\ProjectFileGeneratorBase.php:137
filterprotected_title_formatsrc\PrintMyBlog\services\generators\ProjectFileGeneratorBase.php:139
filterprivate_title_formatsrc\PrintMyBlog\services\generators\ProjectFileGeneratorBase.php:145
filter\PrintMyBlog\controllers\Shortcodes->tableOfContentssrc\PrintMyBlog\services\generators\WordGenerator.php:19
filterPrintMyBlog\services\ExternalResourceCache->domainsToNotMap()src\PrintMyBlog\services\generators\WordGenerator.php:98
filterwp_insert_post_datasrc\PrintMyBlog\system\CustomPostTypes.php:132
filterrest_post_search_querysrc\PrintMyBlog\system\CustomPostTypes.php:133
filtermap_meta_capsrc\PrintMyBlog\system\CustomPostTypes.php:142
filterupload_mimessrc\PrintMyBlog\system\FileUploads.php:17
filterwp_check_filetype_and_extsrc\PrintMyBlog\system\FileUploads.php:18
filterrest_pre_dispatchsrc\PrintMyBlog\system\Init.php:77
actionadmin_print_footer_scriptssrc\Twine\admin\news\DashboardNews.php:83
filterwp_die_ajax_handlersrc\Twine\admin\news\DashboardNews.php:137
actionwp_enqueue_scriptssrc\Twine\forms\base\FormSection.php:653
actionadmin_enqueue_scriptssrc\Twine\forms\base\FormSection.php:654
actionwp_footersrc\Twine\forms\base\FormSection.php:656
actionwp_footersrc\Twine\forms\base\FormSection.php:730
actionadmin_footersrc\Twine\forms\base\FormSection.php:731
actionshutdownsrc\Twine\services\config\Config.php:156
actionadmin_noticessrc\Twine\services\notifications\OneTimeNotificationManager.php:51
actionplugins_loadedsrc\Twine\system\Init.php:28
actioninitsrc\Twine\system\Init.php:38
actioninitsrc\Twine\system\Init.php:39
Maintenance & Trust

Print My Blog – Print, PDF, & eBook Converter WordPress Plugin Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedMar 11, 2026
PHP min version5.4
Downloads430K

Community Trust

Rating96/100
Number of ratings109
Active installs8K
Developer Profile

Print My Blog – Print, PDF, & eBook Converter WordPress Plugin Developer Profile

Michael Nelson

1 plugin · 8K total installs

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

How We Detect Print My Blog – Print, PDF, & eBook Converter WordPress Plugin

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/print-my-blog/assets/css/print-my-blog-frontend.css/wp-content/plugins/print-my-blog/assets/css/print-my-blog-print.css/wp-content/plugins/print-my-blog/assets/js/print-my-blog-frontend.js/wp-content/plugins/print-my-blog/assets/js/print-my-blog-print.js/wp-content/plugins/print-my-blog/assets/css/admin-print-my-blog.css/wp-content/plugins/print-my-blog/assets/js/admin-print-my-blog.js/wp-content/plugins/print-my-blog/vendor/freemius/freemius-sdk-unity/includes/verbose.css/wp-content/plugins/print-my-blog/vendor/freemius/freemius-sdk-unity/includes/verbose.js
Script Paths
print-my-blog/assets/js/print-my-blog-frontend.jsprint-my-blog/assets/js/print-my-blog-print.jsprint-my-blog/assets/js/admin-print-my-blog.jsprint-my-blog/vendor/freemius/freemius-sdk-unity/includes/verbose.js
Version Parameters
print-my-blog/assets/css/print-my-blog-frontend.css?ver=print-my-blog/assets/css/print-my-blog-print.css?ver=print-my-blog/assets/js/print-my-blog-frontend.js?ver=print-my-blog/assets/js/print-my-blog-print.js?ver=print-my-blog/assets/css/admin-print-my-blog.css?ver=print-my-blog/assets/js/admin-print-my-blog.js?ver=print-my-blog/vendor/freemius/freemius-sdk-unity/includes/verbose.css?ver=print-my-blog/vendor/freemius/freemius-sdk-unity/includes/verbose.js?ver=

HTML / DOM Fingerprints

CSS Classes
pmb-main-containerpmb-containerpmb-toolbarpmb-contentpmb-print-buttonpmb-headerpmb-footerpmb-post-title+4 more
HTML Comments
<!-- This is a Print My Blog generated page. --><!-- Start Print My Blog Toolbar --><!-- End Print My Blog Toolbar --><!-- Print My Blog - Load JavaScript -->
Data Attributes
data-pmb-iddata-pmb-print-settings
JS Globals
pmb_print_datapmb_settingspmb_post_datapmb_frontend_optionspmb_print_options
REST Endpoints
/wp-json/print-my-blog/v1/get_post_data/wp-json/print-my-blog/v1/save_print_settings/wp-json/print-my-blog/v1/get_print_settings/wp-json/print-my-blog/v1/get_all_print_settings
Shortcode Output
[print-my-blog][print-my-blog-link][print-my-blog-pdf]
FAQ

Frequently Asked Questions about Print My Blog – Print, PDF, & eBook Converter WordPress Plugin