Internal Link Juicer: SEO Auto Linker for WordPress Security & Risk Analysis

wordpress.org/plugins/internal-links

Improve your SEO and your user experience through internal linkbuilding. Automated links between your posts based on a smart keyword configuration.

90K active installs v2.26.0 PHP 7.1.0+ WP 5.9.0+ Updated Feb 10, 2026
automatic-linkinginternal-linkslinkbuildingonpageseo
99
A · Safe
CVEs total2
Unpatched0
Last CVEJul 9, 2024
Safety Verdict

Is Internal Link Juicer: SEO Auto Linker for WordPress Safe to Use in 2026?

Generally Safe

Score 99/100

Internal Link Juicer: SEO Auto Linker for WordPress has a strong security track record. Known vulnerabilities have been patched promptly.

2 known CVEsLast CVE: Jul 9, 2024Updated 1mo ago
Risk Assessment

The 'internal-links' plugin v2.26.0 presents a mixed security posture. On the positive side, it demonstrates good practices in output escaping (98% properly escaped) and utilizes prepared statements for a high percentage of its SQL queries (79%). The absence of critical or high-severity taint flows and the fact that there are no currently unpatched CVEs are also strong indicators of a relatively well-maintained codebase.

However, significant concerns arise from the large attack surface, particularly the 21 AJAX handlers, with a concerning 20 of them lacking authentication checks. This is compounded by the presence of the `unserialize` function, which, when combined with unprotected entry points, can be a gateway for remote code execution vulnerabilities if not handled with extreme care. The vulnerability history, while showing no current critical or high issues, does reveal two past medium-severity vulnerabilities related to CSRF and XSS, suggesting past weaknesses that require ongoing vigilance. The plugin bundles libraries like DataTables, Select2, and Freemius v1.0, which, if outdated, could introduce additional risks.

In conclusion, while the plugin has strengths in output sanitization and SQL query preparation, the high number of unprotected AJAX endpoints and the presence of `unserialize` create a substantial risk profile. The past vulnerability types (CSRF, XSS) reinforce the need for robust input validation and authentication on all exposed functionalities. Continuous monitoring for new vulnerabilities and ensuring timely patching are crucial for mitigating these risks.

Key Concerns

  • 20 unprotected AJAX handlers
  • Use of 'unserialize' function
  • 2 medium severity CVEs in history
  • Bundled outdated libraries possible
Vulnerabilities
2

Internal Link Juicer: SEO Auto Linker for WordPress Security Vulnerabilities

CVEs by Year

2 CVEs in 2024
2024
Patched Has unpatched

Severity Breakdown

Medium
2

2 total CVEs

CVE-2024-37941medium · 4.3Cross-Site Request Forgery (CSRF)

Internal Link Juicer: SEO Auto Linker for WordPress <= 2.24.3 - Cross-Site Request Forgery

Jul 9, 2024 Patched in 2.24.4 (7d)
CVE-2024-0657medium · 4.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Internal Link Juicer <= 2.23.4 - Authenticated (Admin+) Stored Cross-Site Scripting

Feb 8, 2024 Patched in 2.23.5 (173d)
Code Analysis
Analyzed Mar 16, 2026

Internal Link Juicer: SEO Auto Linker for WordPress Code Analysis

Dangerous Functions
1
Raw SQL Queries
19
72 prepared
Unescaped Output
6
392 escaped
Nonce Checks
20
Capability Checks
26
File Operations
3
External Requests
0
Bundled Libraries
3

Dangerous Functions Found

unserialize$result = unserialize($serialized_data); // For PHP 5.2 users, the search-replace feature has been rhelper\misc.php:41

Bundled Libraries

DataTablesSelect2Freemius1.0

SQL Query Safety

79% prepared91 total queries

Output Escaping

98% escaped398 total outputs
Data Flows
All sanitized

Data Flow Analysis

10 flows
render (backend\menupage\settings.php:144)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
20 unprotected

Internal Link Juicer: SEO Auto Linker for WordPress Attack Surface

Entry Points21
Unprotected20

AJAX Handlers 21

authwp_ajax_ilj_search_postscore\app.php:308
authwp_ajax_ilj_hide_promocore\app.php:309
authwp_ajax_ilj_upload_importcore\app.php:311
authwp_ajax_ilj_start_importcore\app.php:312
authwp_ajax_ilj_export_settingscore\app.php:313
authwp_ajax_ilj_render_link_detail_statisticcore\app.php:314
authwp_ajax_ilj_render_links_statisticcore\app.php:315
authwp_ajax_ilj_render_anchor_detail_statisticcore\app.php:316
authwp_ajax_ilj_render_anchors_statisticcore\app.php:317
authwp_ajax_ilj_rebuild_indexcore\app.php:318
authwp_ajax_load_link_statisticscore\app.php:319
authwp_ajax_ilj_cancel_schedulescore\app.php:320
authwp_ajax_ilj_fix_database_collationcore\app.php:321
authwp_ajax_ilj_clear_all_transientcore\app.php:322
authwp_ajax_ilj_clear_single_transientcore\app.php:323
authwp_ajax_load_anchor_statistics_chunkcore\app.php:324
authwp_ajax_ilj_dismiss_admin_warning_litespeedcore\app.php:326
authwp_ajax_render_keyword_meta_boxcore\app.php:327
noprivwp_ajax_render_keyword_meta_boxcore\app.php:328
authwp_ajax_ilj_render_batch_infocore\app.php:334
authwp_ajax_ilj_notice_dismisscore\app.php:352
WordPress Hooks 49
filterwpbackend\column.php:66
actionadmin_enqueue_scriptsbackend\editor.php:313
actionadmin_enqueue_scriptsbackend\menupage\abstractmenupage.php:95
actionadmin_enqueue_scriptsbackend\menupage\dashboard.php:67
actioncurrent_screenbackend\menupage\tools.php:50
actionadmin_initbackend\menupage\tour.php:95
actionadmin_initcore\app.php:92
actionadmin_initcore\app.php:93
actionadmin_initcore\app.php:94
actionfuture_to_publishcore\app.php:95
actionplugins_loadedcore\app.php:96
actionafter_setup_themecore\app.php:97
actionadmin_menucore\app.php:139
actionall_admin_noticescore\app.php:169
actionall_admin_noticescore\app.php:294
actionwp_enqueue_scriptscore\app.php:298
actionadmin_enqueue_scriptscore\app.php:299
actionadmin_enqueue_scriptscore\app.php:300
actionadmin_enqueue_scriptscore\app.php:301
actionload-post.phpcore\app.php:303
actionload-post-new.phpcore\app.php:305
actionsave_postcore\app.php:306
actionwp_loadedcore\app.php:310
actionupdated_optioncore\app.php:325
actionadmin_bar_menucore\app.php:332
filteraction_scheduler_queue_runner_time_limitcore\app.php:348
actionaction_scheduler_before_process_queuecore\app.php:349
actionpost_updatedcore\app.php:465
actiondelete_postcore\app.php:469
actionpost_updatedcore\app.php:488
actionupdated_post_metacore\app.php:511
actiontransition_post_statuscore\app.php:583
filterthe_contentcore\app.php:674
filterilj_get_the_contentcore\app.php:675
filterilj_get_the_content_termcore\app.php:676
filterreshow_trial_after_every_n_seccore\app.php:698
filtershow_first_trial_after_n_seccore\app.php:706
filtershow_affiliate_program_noticecore\app.php:714
filterpll_preferred_languagecore\compat.php:75
filteradd_to_meta_box_exceptioncore\compat.php:82
actionbuilder_compatcore\compat.php:321
filterthe_contentcore\indexstrategy\indexstrategy.php:411
actionbuilder_compatcore\themecompat.php:47
filterilj_post_link_attributesfilters\link-attributes-filter.php:27
filterilj_term_link_attributesfilters\link-attributes-filter.php:37
actionaction_scheduler_completed_actionhelper\batchbuilding.php:208
actionaction_scheduler_completed_actionhelper\batchbuilding.php:292
actionwp_initialize_siteincludes\install.php:82
actionafter_uninstallincludes\uninstall.php:119
Maintenance & Trust

Internal Link Juicer: SEO Auto Linker for WordPress Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedFeb 10, 2026
PHP min version7.1.0
Downloads1.3M

Community Trust

Rating94/100
Number of ratings525
Active installs90K
Developer Profile

Internal Link Juicer: SEO Auto Linker for WordPress Developer Profile

David Anderson / Team Updraft

16 plugins · 6.4M total installs

78
trust score
Avg Security Score
98/100
Avg Patch Time
1197 days
View full developer profile
Detection Fingerprints

How We Detect Internal Link Juicer: SEO Auto Linker for WordPress

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/internal-links/admin/js/tipso.js/wp-content/plugins/internal-links/admin/js/jquery.dataTables.js/wp-content/plugins/internal-links/admin/js/ilj_promo.js/wp-content/plugins/internal-links/admin/css/tipso.css/wp-content/plugins/internal-links/admin/css/ilj_ui.css/wp-content/plugins/internal-links/admin/css/ilj_grid.css/wp-content/plugins/internal-links/admin/css/jquery.dataTables.css/wp-content/plugins/internal-links/admin/css/ilj_statistic.css+1 more
Script Paths
/wp-content/plugins/internal-links/admin/js/tipso.js/wp-content/plugins/internal-links/admin/js/jquery.dataTables.js/wp-content/plugins/internal-links/admin/js/ilj_promo.js/wp-content/plugins/internal-links/admin/js/ilj_statistic.js
Version Parameters
internal-links/admin/js/tipso.js?ver=internal-links/admin/js/jquery.dataTables.js?ver=internal-links/admin/js/ilj_promo.js?ver=internal-links/admin/css/tipso.css?ver=internal-links/admin/css/ilj_ui.css?ver=internal-links/admin/css/ilj_grid.css?ver=internal-links/admin/css/jquery.dataTables.css?ver=internal-links/admin/css/ilj_statistic.css?ver=internal-links/admin/js/ilj_statistic.js?ver=

HTML / DOM Fingerprints

CSS Classes
ilj_promo_widget
Data Attributes
data-ilj_admin_ajax_url
JS Globals
ilj_statistic_translationilj_link_statistic_filter_typesheaderLabelsheader_titlesILJ
REST Endpoints
/wp-json/ilj-rest-api/v1/settings/wp-json/ilj-rest-api/v1/link-suggestions/wp-json/ilj-rest-api/v1/link-building
FAQ

Frequently Asked Questions about Internal Link Juicer: SEO Auto Linker for WordPress