SurfLink – Link Manager & Backup Restore Security & Risk Analysis

wordpress.org/plugins/surflink

Search & Replace, 301/302/307 Redirection, 404/410 Manager, Link Shortener, Auto Linking, Backup & Restore, Hide Login Url Security.

30 active installs v2.5.3 PHP 7.4+ WP 5.6+ Updated Feb 21, 2026
backuplinksredirectsshortlinksurl
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is SurfLink – Link Manager & Backup Restore Safe to Use in 2026?

Generally Safe

Score 100/100

SurfLink – Link Manager & Backup Restore has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 1mo ago
Risk Assessment

The Surflink v2.5.3 plugin demonstrates a generally good security posture with many positive indicators. The vast majority of SQL queries utilize prepared statements, and output escaping is nearly perfect, suggesting a strong understanding of common web vulnerabilities. The absence of known CVEs and a clean vulnerability history further bolster this impression. However, several areas warrant attention. A significant attack surface of 52 AJAX handlers is present, with 9 of these lacking authentication checks. This is a critical concern, as it potentially allows unauthenticated users to trigger plugin functionality. Furthermore, the presence of the `unserialize` function and 7 high-severity taint flows with unsanitized paths indicate potential risks related to deserialization vulnerabilities or mishandling of user-controlled data within the code. While the plugin has no recorded vulnerabilities, these static analysis findings highlight areas where new vulnerabilities could emerge if not addressed. The bundled Freemius v1.0 library, while not explicitly stated as outdated, should be monitored for known vulnerabilities. Overall, Surflink v2.5.3 has strengths in data handling and output sanitization, but the substantial number of unprotected AJAX endpoints and concerning taint flows introduce notable risks that require immediate remediation.

Key Concerns

  • Unprotected AJAX handlers
  • High severity taint flows
  • Dangerous unserialize function used
Vulnerabilities
None known

SurfLink – Link Manager & Backup Restore Security Vulnerabilities

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

SurfLink – Link Manager & Backup Restore Code Analysis

Dangerous Functions
6
Raw SQL Queries
61
160 prepared
Unescaped Output
3
529 escaped
Nonce Checks
20
Capability Checks
50
File Operations
44
External Requests
0
Bundled Libraries
1

Dangerous Functions Found

unserialize$unserialized = @unserialize( $value, [includes\class-surfl-br-replace-engine.php:30
unserialize$unserialized = @unserialize( $data, [includes\class-surfl-br-replace-engine.php:636
unserialize$unserialized = @unserialize( $value, [includes\class-surfl-fast-sr.php:173
unserialize$unserialized = @unserialize( $data, [includes\class-surfl-fast-sr.php:482
unserialize$unserialized = @unserialize( $data, [includes\class-surfl-fast-sr.php:528
unserialize$changes = unserialize($item['contents']);templates\surfl-srh.php:68

Bundled Libraries

Freemius1.0

SQL Query Safety

72% prepared221 total queries

Output Escaping

99% escaped532 total outputs
Data Flows
9 unsanitized

Data Flow Analysis

25 flows9 with unsanitized paths
ajax_finalizing_backup (includes\class-surfl-br-loader.php:1540)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
9 unprotected

SurfLink – Link Manager & Backup Restore Attack Surface

Entry Points52
Unprotected9

AJAX Handlers 52

authwp_ajax_surfl_delete_single_404_logincludes\class-surfl-404.php:22
authwp_ajax_surfl_make_404_to_410includes\class-surfl-404.php:25
authwp_ajax_surfl_bulk_delete_404_surfl_logsincludes\class-surfl-404.php:28
authwp_ajax_surfl_bulk_make_410includes\class-surfl-404.php:30
authwp_ajax_surfl_empty_404includes\class-surfl-404.php:32
authwp_ajax_surfl_delete_410includes\class-surfl-410.php:26
authwp_ajax_surfl_add_single_410includes\class-surfl-410.php:27
authwp_ajax_surfl_save_edited_410includes\class-surfl-410.php:28
authwp_ajax_surfl_bulk_delete_410includes\class-surfl-410.php:29
authwp_ajax_surfl_empty_410includes\class-surfl-410.php:30
authwp_ajax_surfl_export_410includes\class-surfl-410.php:31
authwp_ajax_surfl_import_410includes\class-surfl-410.php:32
authwp_ajax_surfl_start_backupincludes\class-surfl-br-loader.php:39
authwp_ajax_surfl_run_file_backupincludes\class-surfl-br-loader.php:40
authwp_ajax_surfl_backup_databaseincludes\class-surfl-br-loader.php:41
authwp_ajax_surfl_backup_filesincludes\class-surfl-br-loader.php:43
authwp_ajax_surfl_finalize_backup_fileincludes\class-surfl-br-loader.php:44
authwp_ajax_surfl_finalizing_backupincludes\class-surfl-br-loader.php:45
authwp_ajax_surfl_check_pending_uploadincludes\class-surfl-br-loader.php:46
authwp_ajax_surfl_check_db_infoincludes\class-surfl-br-loader.php:47
authwp_ajax_surfl_delete_uploaded_backup_dirincludes\class-surfl-br-loader.php:48
authwp_ajax_surfl_run_restore_backupincludes\class-surfl-br-loader.php:53
authwp_ajax_surfl_upload_backup_file_chunkincludes\class-surfl-br-loader.php:54
authwp_ajax_surfl_restore_uploaded_backupincludes\class-surfl-br-loader.php:55
authwp_ajax_surfl_run_db_replaceincludes\class-surfl-br-loader.php:56
authwp_ajax_surfl_download_backupincludes\class-surfl-br-loader.php:60
authwp_ajax_surfl_download_backup_directoryincludes\class-surfl-br-loader.php:61
authwp_ajax_surfl_delete_backup_subdirincludes\class-surfl-br-loader.php:64
authwp_ajax_surfl_delete_backup_zip_fileincludes\class-surfl-br-loader.php:65
authwp_ajax_surfl_delete_incomplete_backup_zip_fileincludes\class-surfl-br-loader.php:66
authwp_ajax_surfl_bulk_delete_backupsincludes\class-surfl-br-loader.php:67
authwp_ajax_surfl_empty_backup_directoryincludes\class-surfl-br-loader.php:68
authwp_ajax_surfl_browse_backup_contentsincludes\class-surfl-br-loader.php:71
authwp_ajax_surfl_preview_logincludes\class-surfl-br-loader.php:72
authwp_ajax_surfl_preview_error_logincludes\class-surfl-br-loader.php:73
authwp_ajax_surfl_srh_bulk_actionincludes\class-surfl-fast-sr.php:37
authwp_ajax_surfl_delete_srhincludes\class-surfl-fast-sr.php:38
authwp_ajax_surfl_process_replaceincludes\class-surfl-fast-sr.php:39
authwp_ajax_surfl_process_post_title_replaceincludes\class-surfl-fast-sr.php:40
authwp_ajax_surfl_lh_unban_ipincludes\class-surfl-loginhider.php:50
authwp_ajax_surfl_lh_delete_attempt_ipincludes\class-surfl-loginhider.php:53
authwp_ajax_surfl_lh_bulk_action_attemptsincludes\class-surfl-loginhider.php:56
authwp_ajax_surfl_save_modulesincludes\class-surfl-module-manager.php:10
authwp_ajax_surfl_add_redirect_3includes\class-surfl-redirect.php:23
authwp_ajax_surfl_bulk_add_redirectsincludes\class-surfl-redirect.php:24
authwp_ajax_surfl_bulk_delete_redirectsincludes\class-surfl-redirect.php:25
authwp_ajax_surfl_bulk_change_redirect_typeincludes\class-surfl-redirect.php:26
authwp_ajax_surfl_empty_redirectsincludes\class-surfl-redirect.php:27
authwp_ajax_surfl_export_redirectsincludes\class-surfl-redirect.php:28
authwp_ajax_surfl_import_redirectsincludes\class-surfl-redirect.php:29
authwp_ajax_surfl_save_redirectincludes\class-surfl-redirect.php:30
authwp_ajax_surfl_delete_redirectincludes\class-surfl-redirect.php:31
WordPress Hooks 25
actiontemplate_redirectincludes\class-surfl-404.php:19
actiontemplate_redirectincludes\class-surfl-410.php:25
filterqm/enableincludes\class-surfl-backup-helper.php:204
actionadmin_initincludes\class-surfl-backup-settings.php:18
actionadmin_enqueue_scriptsincludes\class-surfl-loader.php:40
actionadmin_menuincludes\class-surfl-loader.php:499
actionadmin_initincludes\class-surfl-loginhider.php:48
actioninitincludes\class-surfl-loginhider.php:119
actioninitincludes\class-surfl-loginhider.php:121
actioninitincludes\class-surfl-loginhider.php:124
actioninitincludes\class-surfl-loginhider.php:128
filterquery_varsincludes\class-surfl-loginhider.php:131
actionwp_enqueue_scriptsincludes\class-surfl-loginhider.php:134
actionwp_login_failedincludes\class-surfl-loginhider.php:137
actionwp_loginincludes\class-surfl-loginhider.php:139
actionwp_logoutincludes\class-surfl-loginhider.php:141
filterlogin_urlincludes\class-surfl-loginhider.php:143
actiontemplate_redirectincludes\class-surfl-loginhider.php:145
actiontemplate_redirectincludes\class-surfl-redirect.php:40
filterqm/enableincludes\class-surfl-restore-db.php:62
filterqm/enableincludes\class-surfl-restore-db.php:486
actionadmin_initsurf-link.php:64
actionafter_uninstallsurf-link.php:74
filterpricing/show_annual_in_monthlysurf-link.php:75
actionplugins_loadedsurf-link.php:114
Maintenance & Trust

SurfLink – Link Manager & Backup Restore Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedFeb 21, 2026
PHP min version7.4
Downloads5K

Community Trust

Rating100/100
Number of ratings2
Active installs30
Developer Profile

SurfLink – Link Manager & Backup Restore Developer Profile

Surflab

3 plugins · 30 total installs

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

How We Detect SurfLink – Link Manager & Backup Restore

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/surflink/assets/js/surfl.js/wp-content/plugins/surflink/assets/js/redirects.js/wp-content/plugins/surflink/assets/css/surfl.css/wp-content/plugins/surflink/assets/css/enhanced-redirects.css/wp-content/plugins/surflink/assets/css/404-manager.css/wp-content/plugins/surflink/assets/css/shortcodes.css/wp-content/plugins/surflink/assets/css/login-hider.css
Script Paths
/wp-content/plugins/surflink/assets/js/surfl.js/wp-content/plugins/surflink/assets/js/redirects.js
Version Parameters
surfl.js?ver=redirects.js?ver=surfl.css?ver=enhanced-redirects.css?ver=404-manager.css?ver=shortcodes.css?ver=login-hider.css?ver=

HTML / DOM Fingerprints

CSS Classes
surfl-dashboard-wrappersurfl-admin-menusurfl-dashboard-titlesurfl-dashboard-contentsurfl-redirects-tablesurfl-redirect-rowsurfl-404-listsurfl-shortcode-editor-button+2 more
HTML Comments
<!-- DO NOT REMOVE THIS IF, IT IS ESSENTIAL FOR THEfunction_exists CALL ABOVE TO PROPERLY WORK.Include Freemius SDK.Init Freemius.+20 more
Data Attributes
data-surfl-iddata-redirect-iddata-shortcode-typedata-login-hider-setting
JS Globals
surflJqObjSURFL_AJAX_REDIRECTSSURFL_LOGINHIDER_SETTINGSsurfl_localize_data
REST Endpoints
/wp-json/surflink/v1/redirects/wp-json/surflink/v1/404/wp-json/surflink/v1/settings/wp-json/surflink/v1/loginhider
Shortcode Output
[surfl_redirect_list][surfl_404_log][surfl_login_hider_status][surfl_link_shortener_form]
FAQ

Frequently Asked Questions about SurfLink – Link Manager & Backup Restore