[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f3xqFNJN-QUDc28KFKWD8aD0d1JbnEopCiBKv9VMTU8A":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":36,"analysis":129,"fingerprints":1007},"surflink","SurfLink – Link Manager & Backup Restore","2.5.3","Surflab","https:\u002F\u002Fprofiles.wordpress.org\u002Fsurflabtech\u002F","\u003Cp>\u003Cstrong>SurfLink\u003C\u002Fstrong> is designed to Search & Replace, Easy Redirection, 404\u002F410 Manager, Link Shortener, Auto Linking, Backup & Restore, Hide Login Url Security.\u003C\u002Fp>\n\u003Ch3>🚀 Module 1: Search and Replace\u003C\u002Fh3>\n\u003Cp>Safely perform bulk find-and-replace operations directly on the database.\u003Cbr \u002F>\n* \u003Cstrong>Database Management:\u003C\u002Fstrong> Supports all tables and handles \u003Cstrong>serialized data\u003C\u002Fstrong> (critical for preventing data corruption).\u003Cbr \u002F>\n* \u003Cstrong>Safety First:\u003C\u002Fstrong> Includes a “Dry Run” mode to test before applying, case-sensitivity toggles, and specific GUID handling.\u003Cbr \u002F>\n* \u003Cstrong>Title Updater:\u003C\u002Fstrong> Update post titles in pages, posts and custom post types.\u003Cbr \u002F>\n* \u003Cstrong>History Logs:\u003C\u002Fstrong> View detailed logs of changes with a “View Changes” diff modal (Before vs. After).\u003Cbr \u002F>\n* \u003Cstrong>Easy URL Updater (Pro):\u003C\u002Fstrong> A dedicated visual interface to update old domain names or migrate HTTP to HTTPS across contents, attachments, and links.\u003Cbr \u002F>\n* \u003Cstrong>Rerun Operation (Upcoming):\u003C\u002Fstrong> Re-run a Search & Replace operation from the History Logs.\u003C\u002Fp>\n\u003Ch3>🔗 Module 2: Redirects, 410 & 404s\u003C\u002Fh3>\n\u003Cp>A complete suite for managing traffic and broken links.\u003Cbr \u002F>\n* \u003Cstrong>Redirect Manager:\u003C\u002Fstrong> Create 301, 302, or 307 redirects.\u003Cbr \u002F>\n* \u003Cstrong>Advanced Rules (Pro):\u003C\u002Fstrong> Redirect based on Regex, “Starts With”, “Contains”, “Is 404”, User Agent, or even redirect to Random Posts.\u003Cbr \u002F>\n* \u003Cstrong>Redirect List:\u003C\u002Fstrong> View redirects in a nice table. Create, edit, and delete redirects.\u003Cbr \u002F>\n* \u003Cstrong>Dead Link Handling:\u003C\u002Fstrong> Monitor 404 logs and easily convert them to Redirects or \u003Cstrong>410 Gone\u003C\u002Fstrong> status (to tell Google a page is permanently deleted).\u003Cbr \u002F>\n* \u003Cstrong>Import\u002FExport:\u003C\u002Fstrong> Support for CSV import\u002Fexport for bulk management.\u003C\u002Fp>\n\u003Ch3>💾 Module 3: Backup and Restore\u003C\u002Fh3>\n\u003Cp>Secure your site data with a few clicks.\u003Cbr \u002F>\n* \u003Cstrong>Flexible Backups:\u003C\u002Fstrong> Backup the entire database, specific directories (Uploads, Themes, Plugins), or both.\u003Cbr \u002F>\n* \u003Cstrong>Selective Restore:\u003C\u002Fstrong> Restore an entire site or just specific components (e.g., restore only the database, keep the themes).\u003Cbr \u002F>\n* \u003Cstrong>Scheduled Auto Backups (Pro):\u003C\u002Fstrong> Set it and forget it. Schedule daily or weekly backups to ensure you never lose data.\u003Cbr \u002F>\n* \u003Cstrong>Upload & Restore (Mix):\u003C\u002Fstrong> Restore backups from external files easily. Unlimited file size support in premium version.\u003Cbr \u002F>\n* \u003Cstrong>Cross domain Restore:\u003C\u002Fstrong> Restore backups from a different domain (e.g., staging, localhost, or a new production domain).\u003Cbr \u002F>\n* \u003Cstrong>Remote Backups (Upcoming):\u003C\u002Fstrong> Backup to a remote location (e.g., Google Drive) for long-term storage.\u003C\u002Fp>\n\u003Ch3>🔒 Module 4: LoginHider Security\u003C\u002Fh3>\n\u003Cp>Protect your site from brute-force attacks.\u003Cbr \u002F>\n* \u003Cstrong>Hide Login URL:\u003C\u002Fstrong> Change your default \u003Ccode>wp-login.php\u003C\u002Fcode> to a custom slug (e.g., \u003Ccode>\u002Fmy-secret-entry\u003C\u002Fcode>) and show a nice login form.\u003Cbr \u002F>\n* \u003Cstrong>Options:\u003C\u002Fstrong> Configure the custom login slug, max login attempts, and IP ban duration.\u003Cbr \u002F>\n* \u003Cstrong>Limit Attempts:\u003C\u002Fstrong> Log failed login attempts and automatically ban IPs after a set threshold.\u003Cbr \u002F>\n* \u003Cstrong>Failed Login Logs:\u003C\u002Fstrong> View detailed logs of failed login attempts.\u003Cbr \u002F>\n* \u003Cstrong>IP Unbanning:\u003C\u002Fstrong> Easily remove IP addresses from the ban list.\u003C\u002Fp>\n\u003Ch3>Module Manager\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Module Manager:\u003C\u002Fstrong> Enable\u002Fdisable modules to keep your admin interface clean.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Background Processes:\u003C\u002Fstrong> Also enable\u002Fdisable background processes to optimize performance as needed.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>* \u003Cstrong>Advanced Options (Upcoming):\u003C\u002Fstrong> You can enable\u002Fdisable a specific sub-module in the Module Manager.\u003C\u002Fp>\n\u003Ch3>🟢 Free Features vs 🔴 Pro Features\u003C\u002Fh3>\n\u003Ch4>Free Version Includes:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Search & Replace:\u003C\u002Fstrong> Standard DB search\u002Freplace, Dry Run, History Logs, “View Changes” diff.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Easy Title Updater:\u003C\u002Fstrong> Update post titles with a single click in post, page and custom post types. Dry Run, History Logs, “View Changes” diff.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Redirects:\u003C\u002Fstrong> Add specific (single\u002Fbulk) redirects, 404 Logs, Specific 410 (Gone) status, Import\u002FExport.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Backup:\u003C\u002Fstrong> Manual Backup creation, Saved Backup logs, Manual Restore, Selective Restore.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Security:\u003C\u002Fstrong> Login Hider settings, Failed login logs, IP Unbanning.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>General:\u003C\u002Fstrong> Module Manager (enable\u002Fdisable features).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Pro Version Includes:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Easy URL Updater:\u003C\u002Fstrong> Visual interface for URL migration.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Advanced Redirect Rules:\u003C\u002Fstrong> Regex, Wildcards, Parameter handling, Random post redirects.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Link Shortener:\u003C\u002Fstrong> Create and track branded shortlinks.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Auto Linker (Pro):\u003C\u002Fstrong> Let SurfLink handle your affiliate linking for you. Enter your keywords once, and watch every existing and future post monetize itself automatically.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Hard Linker (Pro):\u003C\u002Fstrong> Automatically link posts, pages, categories, tags, and custom post types.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Hard Unlinker (Pro):\u003C\u002Fstrong> Automatically unlink posts, pages, categories, tags, and custom post types.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Group Tagging:\u003C\u002Fstrong> Create, edit, and delete groups of shortlinks.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Advanced 410:\u003C\u002Fstrong> Add 410s automatically from deleted items (trash\u002Fdelete hooks).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Add Multisite 410:\u003C\u002Fstrong> Add multiple 410s at once.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Scheduled Backups:\u003C\u002Fstrong> Automated daily\u002Fweekly backups to keep your data safe.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Upload large files & Restore:\u003C\u002Fstrong> Restore backups from external files with no size limitation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>SurfLink is compatible with these plugins\u003C\u002Fh3>\n\u003Cp>You can use these similar type plugins while keeping Surflink installed: PrettyLinks, BetterLinks, Redirection, Better Search Replace, UpdraftPlus, All-in-One WP Migration, Duplicator, BackWPup.\u003Cbr \u002F>\nSurflink will continue working alongside these. If you don’t want a specific module, you can always disable that Surflink module from module manager.\u003C\u002Fp>\n","Search & Replace, 301\u002F302\u002F307 Redirection, 404\u002F410 Manager, Link Shortener, Auto Linking, Backup & Restore, Hide Login Url Security.",30,4831,100,2,"2026-02-21T15:57:00.000Z","6.9.4","5.6","7.4",[20,21,22,23,24],"backup","links","redirects","shortlinks","url","https:\u002F\u002Fsurflabtech.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsurflink.2.5.3.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":11,"avg_security_score":13,"avg_patch_time_days":11,"trust_score":34,"computed_at":35},"surflabtech",3,94,"2026-04-04T06:23:24.166Z",[37,55,74,94,112],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":13,"downloaded":45,"rating":13,"num_ratings":14,"last_updated":46,"tested_up_to":16,"requires_at_least":47,"requires_php":48,"tags":49,"homepage":53,"download_link":54,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"tinypress","PublishPress Shortlinks – Custom URLs for Posts and External Links – Share Previews for Draft Posts","1.3.0","PublishPress","https:\u002F\u002Fprofiles.wordpress.org\u002Fpublishpress\u002F","\u003Cp>With PublishPress Shortlinks you can create custom links for your posts and external links. These custom links have super-powers!\u003C\u002Fp>\n\u003Cul>\n\u003Cli>You can make your links short and memorable.\u003C\u002Fli>\n\u003Cli>You can track who clicks on your links with detailed analytics.\u003C\u002Fli>\n\u003Cli>You can share posts in Draft and Pending Review status.\u003C\u002Fli>\n\u003Cli>You can control who can visit your links with passwords, expiry dates, and access control.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How to use PublishPress Shortlinks\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Custom URLs for your posts\u003C\u002Fstrong>. Imagine you’re hosting a big event and have a page on your website with all the details. PublishPress Shortlinks allows to create a short, memorable link for the event, for example: https:\u002F\u002Fpublishpress.com\u002Fgo\u002Fcool-party. You can track how many people click the link. You can set the link to expire after the event finishes. You can even download a QR code to share on brochures. Oh, because of the next feature, you can do all of this even if you’re selling event tickets on another website.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom URLs for external links\u003C\u002Fstrong>. Imagine you run a website with toy reviews. You join affiliate programs and make money when people click on your links and buy tools. PublishPress Shortlinks allows to create a short, memorable link for each toy, for example: https:\u002F\u002Fpublishpress.com\u002Fgo\u002Fcool-toy. You can track how many people click the link and get a full analytics report on those clicks.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Key Features in PublishPress Shortlinks\u003C\u002Fh3>\n\u003Cp>✅ Automatically create shortlinks for your posts\u003Cbr \u002F>\n✅ Use your own website domain for shortlinks\u003Cbr \u002F>\n✅ Customize the slug for each shortlink\u003Cbr \u002F>\n✅ Share shortlinks for posts in any status\u003Cbr \u002F>\n✅ Add password protection to your shortlinks\u003Cbr \u002F>\n✅ Automatically export your shortlinks on a specific date\u003Cbr \u002F>\n✅ Choose from 301, 302, and 307 redirects\u003Cbr \u002F>\n✅ Track who is clicking your shortlinks with analytics\u003Cbr \u002F>\n✅ Generate a QR code for each shortlink to allow easy sharing\u003Cbr \u002F>\n✅ Cloak your affiliate links\u003C\u002Fp>\n\u003Ch3>Automatically create shortlinks for your posts\u003C\u002Fh3>\n\u003Cp>PublishPress Shortlinks will automatically generate links for all your posts and pages. This makes it really easy to have shareable links for content. These shortlinks are available from the Posts screen and the Post Edit screen.\u003C\u002Fp>\n\u003Ch3>Use your own website domain for shortlinks\u003C\u002Fh3>\n\u003Cp>There’s no need to use an external service to build and track your links. With PublishPress Shortlinks, all your custom URLs use your own domain name. To avoid conflicts with any regular URLs on your site, there’s also a folder which is set to “go” by default. This means that your custom URLs will look like this: https:\u002F\u002Fexample.com\u002Fgo\u002Fshortlinks\u003C\u002Fp>\n\u003Ch3>Customize the slug for each shortlink\u003C\u002Fh3>\n\u003Cp>Every post has its own URL. By default, the final part of the URL will be a unique combination of 5 characters, so your shortlink will look like this: https:\u002F\u002Fexample.com\u002Fgo\u002F8vi3n. However, you can customize the slug so it looks like this: https:\u002F\u002Fexample.com\u002Fgo\u002Fshortlinks.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fhow-to-customize-shortlinks\u002F\" rel=\"nofollow ugc\">More on customizing shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Share shortlinks for posts in any status\u003C\u002Fh3>\n\u003Cp>When you’re writing a draft post, do you sometimes need to share it with someone who doesn’t have access to your site? PublishPress Shortlinks is the answer. PublishPress Shortlinks allows you to share posts before you make them public. If you’ve written a draft of a post, you can share a preview with other people. You can protect these links by combining this with other features, including password protection and automatic expiry of links. This feature is similar to the Public Post Preview plugin, but with more features and customizable features.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fposts-status-visibility\u002F\" rel=\"nofollow ugc\">More on shortlinks for unpublished posts\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Add password protection to your shortlinks\u003C\u002Fh3>\n\u003Cp>Edit a shortlink and go to the “Security” tab. You’ll be able to create a password for your sharable links. Nobody will be able to access the post via your shortlink unless they know the password.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fprotect-shortlinks\u002F\" rel=\"nofollow ugc\">More on passwords for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Automatically expire your shortlinks on a specific date\u003C\u002Fh3>\n\u003Cp>Edit a shortlink and go to the “Security” tab. You’ll be able to choose an expiration date for your shortlink. Anyone trying to visit your link after the expiration date will see the message, “This link is expired.”\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fprotect-shortlinks\u002F\" rel=\"nofollow ugc\">More on expiry dates for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Choose from 301, 302, and 307 redirects\u003C\u002Fh3>\n\u003Cp>Edit a shortlink and go to the “Redirection” tab. You can choose what kind of redirect is used for each link. 301 (Permanent) redirects are used to tell search engines that a requested URL has been permanently moved to another URL. If you’re confident that your target URL will never change, then use this redirect type. 302 and 307 (Temporary) redirects tell search engines that the requested URL has been moved temporarily, but will be back eventually.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fredirect-options-for-shortlinks\u002F\" rel=\"nofollow ugc\">More on redirects for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Track who is clicking your shortlinks with analytics\u003C\u002Fh3>\n\u003Cp>PublishPress Shortlinks has a Logs feature that records everyone who clicks your links. These logs are then turned into analytics charts so you can see how popular each shortlink is.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fanalytics-and-logs-for-shortlinks\u002F\" rel=\"nofollow ugc\">More on logs for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Generate a QR code for each shortlink to allow easy sharing\u003C\u002Fh3>\n\u003Cp>PublishPress Shortlinks will automatically create a QR code for each link. This makes it easy to download and share the QR code so people can visit your URL. This is great for advertisements, brochures, PDFs, restaurant menus, or anywhere you want to use a QR code.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpublishpress.com\u002Fknowledge-base\u002Fqr-codes-for-shortlinks\u002F\" rel=\"nofollow ugc\">More on QR codes for shortlinks\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Cloak affiliate links\u003C\u002Fh3>\n\u003Cp>PublishPress Shortlinks is ideal for websites that have affiliate links in posts. You can manage, clean up, brand, and track your links. It’s a great tool for cloaking affiliate links. PublishPress Shortlinks is a great tool for marketers plugin for people who want to clean up their affiliate links.\u003C\u002Fp>\n\u003Ch3>Create Shortlinks via Keyboard Shortcuts\u003C\u002Fh3>\n\u003Cp>Click \u003Ccode>Ctrl\u002FCmd + \u002F\u003C\u002Fcode> anywhere in the WordPress admin area to instantly create shortlinks.\u003C\u002Fp>\n","Create custom links for your posts. These links are brandable, trackable, and can have custom view permissions.",5242,"2026-03-02T21:27:00.000Z","4.6","",[50,51,52,22,23],"custom-urls","link-shortener","link-tracking","https:\u002F\u002Fpublishpress.com\u002Fshortlinks\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftinypress.1.3.0.zip",{"slug":51,"name":56,"version":57,"author":58,"author_profile":59,"description":60,"short_description":61,"active_installs":62,"downloaded":63,"rating":64,"num_ratings":65,"last_updated":66,"tested_up_to":67,"requires_at_least":17,"requires_php":48,"tags":68,"homepage":72,"download_link":73,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"Link Shortner","1.1","Dipakkumar Parmar","https:\u002F\u002Fprofiles.wordpress.org\u002Fdipakparmar443\u002F","\u003Cp>Link Shortner helps you generate short links and share any URL on or off your WordPress website.\u003Cbr \u002F>\nWith this plugin, you can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Create short links for posts.\u003C\u002Fli>\n\u003Cli>Share short links on social media, emails, or anywhere online.\u003C\u002Fli>\n\u003Cli>Quickly regenerate links with one click from your WordPress admin.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Whether you’re managing content, marketing campaigns, or just want neat and professional URLs, Link Shortner makes it simple and effective.\u003C\u002Fp>\n","Link Shortner allows you to easily create clean, branded short permalink links for your posts custom URL.",900,11021,90,11,"2025-08-31T10:13:00.000Z","6.8.5",[21,69,70,23,71],"post","shorten-url","url-shortener","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Flink-shortener\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flink-shortener.1.1.zip",{"slug":75,"name":76,"version":77,"author":78,"author_profile":79,"description":80,"short_description":81,"active_installs":82,"downloaded":83,"rating":84,"num_ratings":33,"last_updated":48,"tested_up_to":85,"requires_at_least":86,"requires_php":48,"tags":87,"homepage":91,"download_link":92,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":93},"bitly-shortlinks-multisite","Bit.ly Shortlinks Multisite (Uses OAuth 2 API)","1.2","Denis Lam","https:\u002F\u002Fprofiles.wordpress.org\u002Fspiffyd\u002F","\u003Cp>WordPress generates shortlinks for your posts and pages. By default it uses the \u003Ccode>?p=\u003C\u002Fcode> with the post ID added to it, but if you have a rather long domain name this isn’t very useful. If you use \u003Ca href=\"http:\u002F\u002Fbit.ly\" rel=\"nofollow ugc\">Bit.ly\u003C\u002Fa>, this plugin will help you replace the shortlink WordPress generates with a proper Bit.ly shortlink.\u003C\u002Fp>\n\u003Cp>This plugin uses the latest Bit.ly OAuth 2 draft specification API instead of its deprecated V3 API and enables you to use generic access token to automatically enable Bit.ly shortlinks in your entire multisite network without the need for each site user to have to tinker with any settings or authentication configurations.\u003C\u002Fp>\n","This plugin replaces the default WordPress shortlinks with Bit.ly shortlinks for your single site or multisite WordPress network.",10,3149,74,"3.5.2","3.0",[88,89,90,23,71],"bitly","multisite","shortlink","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fbitly-shortlinks-multisite\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbitly-shortlinks-multisite.1.2.zip","2026-03-15T10:48:56.248Z",{"slug":95,"name":96,"version":97,"author":98,"author_profile":99,"description":100,"short_description":101,"active_installs":82,"downloaded":102,"rating":27,"num_ratings":27,"last_updated":103,"tested_up_to":104,"requires_at_least":86,"requires_php":48,"tags":105,"homepage":109,"download_link":110,"security_score":111,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"generate-shortlinks","Generate Shortlinks","1.0.0","Jason Grim","https:\u002F\u002Fprofiles.wordpress.org\u002Fjasongrim\u002F","\u003Cp>\u003Cstrong>Background\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>WordPress has created the wonderful functionality of generating shortlinks for post on your blogs. With advanced\u003Cbr \u002F>\npermalink structures a single link to your site can take up 89% of a short email or a facebok update. However,\u003Cbr \u002F>\nWordpress created a very ugly system, the shortlink system simply provides the default permalink structure with ugly\u003Cbr \u002F>\nurl variables.\u003C\u002Fp>\n\u003Cp>Here is the documentation on adding shortlinks to your themes on the \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fthe_shortlink\" title=\"Wordpress.org - Shortlinks\" rel=\"nofollow ugc\">WordPress Codex\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Use\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Some themes use the template method to share the short url of your post. The use of this plugin would convert all of those\u003Cbr \u002F>\nlinks to trackable ones with bit.ly or shorter ones with the other services.\u003C\u002Fp>\n\u003Cp>Also, when you create a new post a button is created next the the URL of your new post. If you click the “Get Shortlink” button\u003Cbr \u002F>\na popup will provide a simple little link to share with all of your friends and fans.\u003C\u002Fp>\n","Uses bit.ly, Ur.ly, and Is.gd to create handy shortlinks to share your WordPress Posts quickly and easily!",4297,"2010-11-25T14:14:00.000Z","3.0.5",[88,106,107,23,108],"isgd","plugins","urly","http:\u002F\u002Fjgwebdevelopment.com\u002Fplugins\u002Fgenerate-shortlinks","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgenerate-shortlinks.1.0.zip",85,{"slug":113,"name":114,"version":97,"author":115,"author_profile":116,"description":117,"short_description":118,"active_installs":27,"downloaded":119,"rating":27,"num_ratings":27,"last_updated":120,"tested_up_to":121,"requires_at_least":122,"requires_php":123,"tags":124,"homepage":127,"download_link":128,"security_score":111,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"redirects-for-wp","WP 301 Redirects by WPBranch","Kamal Hosen","https:\u002F\u002Fprofiles.wordpress.org\u002Fikamal\u002F","\u003Ch4>Improve Your User Experience With WP 301 Redirects Solution for WordPress\u003C\u002Fh4>\n\u003Cp>Redirecting or redirecting a URL is a very useful tool in search engine optimization. It helps search engines find your website more easily by directing them to the new website. Some users may even bookmark the old URL, so it’s important to redirect it to the new URL.\u003C\u002Fp>\n\u003Cp>Got “404 not found” errors? Launching a marketing campaign with a new URL? Or relaunching your website with a new URL? Let’s redirect your old URLs to new ones automatically by creating 301 redirects to existing pages.\u003Cbr \u002F>\nf\u003Cbr \u002F>\nWP 301 Redirects provides an easy method of redirecting requests to another page on your site or elsewhere on the web. It’s especially handy when you migrate a site to WordPress and can’t preserve your URL structure.\u003C\u002Fp>\n\u003Cp>By setting up 301 redirects from your old pages to your new pages, any incoming links on search engines will be redirected to your new pages. WordPress automatically creates a redirect from your old page to your new page and posts. Using 301 redirects ensures that search engines index your new pages instead of your old pages.\u003C\u002Fp>\n\u003Ch3>⭐ FEATURES OF WP 301 REDIRECTS:\u003C\u002Fh3>\n\u003Cp>◾With this plugin, you can check and redirect your old URLs to the new ones with few easy steps\u003Cbr \u002F>\n\u003Cstrong>◾\u003C\u002Fstrong> Designed for any websites with very easy and user friendly interface which you can set up in few seconds\u003C\u002Fp>\n\u003Cp>◾Works great eCommerce, blog, magazine, small business and any others websites\u003C\u002Fp>\n\u003Ch3>🔰 MANAGE YOUR LINKS WITH WP 301 REDIRECTS:\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>◾Import Redirect Rules:\u003C\u002Fstrong> You can import redirects links in bulk from your device and upload using this plugin to manage links\u003C\u002Fp>\n\u003Cp>\u003Cstrong>◾ Export Redirect Rules:\u003C\u002Fstrong> You can also export your 301 Redirect Links in .csv format to use in future\u003C\u002Fp>\n\u003Cp>◾ \u003Cstrong>Wildcards:\u003C\u002Fstrong> It will redirect all files within a directory to the same filename in the redirected directory. To use wildcards, put an asterisk (*) after the folder name that you want to redirect. Example:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Request: \u002Fold-folder\u002F*\u003C\u002Fli>\n\u003Cli>Destination: \u002Fnew-folder\u002F*\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>◾ \u003Cstrong>Friendly Support:\u003C\u002Fstrong> Get super friendly community support as we have an extraordinary support team ready to help you. Ask your questions in the support forum & someone from our team will help you\u003C\u002Fp>\n","WP 301 Redirects is easy to use, and provides an easy method for redirecting requests to another page on your site or elsewhere on the web.",1149,"2022-10-04T13:41:00.000Z","6.0.11","5.0","5.4",[125,126,51,21,23],"301","301-redirects","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-301-redirects\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fredirects-for-wp.1.0.0.zip",{"attackSurface":130,"codeSignals":428,"taintFlows":586,"riskAssessment":995,"analyzedAt":1006},{"hooks":131,"ajaxHandlers":230,"restRoutes":423,"shortcodes":424,"cronEvents":425,"entryPointCount":426,"unprotectedCount":427},[132,138,143,149,154,159,163,167,171,175,178,181,185,189,193,197,201,205,208,211,214,216,220,223,226],{"type":133,"name":134,"callback":135,"file":136,"line":137},"action","template_redirect","log_404","includes\\class-surfl-404.php",19,{"type":133,"name":134,"callback":139,"priority":140,"file":141,"line":142},"maybe_send_410",1,"includes\\class-surfl-410.php",25,{"type":144,"name":145,"callback":146,"file":147,"line":148},"filter","qm\u002Fenable","__return_false","includes\\class-surfl-backup-helper.php",204,{"type":133,"name":150,"callback":151,"file":152,"line":153},"admin_init","settings_init","includes\\class-surfl-backup-settings.php",18,{"type":133,"name":155,"callback":156,"file":157,"line":158},"admin_enqueue_scripts","enqueue_assets","includes\\class-surfl-loader.php",40,{"type":133,"name":160,"callback":161,"file":157,"line":162},"admin_menu","add_admin_menu",499,{"type":133,"name":150,"callback":164,"file":165,"line":166},"handle_settings_submission","includes\\class-surfl-loginhider.php",48,{"type":133,"name":168,"callback":169,"file":165,"line":170},"init","add_rewrite_rules",119,{"type":133,"name":168,"callback":172,"priority":173,"file":165,"line":174},"maybe_flush_rewrite_rules",99,121,{"type":133,"name":168,"callback":176,"file":165,"line":177},"block_default_login",124,{"type":133,"name":168,"callback":179,"priority":140,"file":165,"line":180},"block_admin_access_for_logged_out",128,{"type":144,"name":182,"callback":183,"file":165,"line":184},"query_vars","add_query_vars",131,{"type":133,"name":186,"callback":187,"file":165,"line":188},"wp_enqueue_scripts","enqueue_login_assets",134,{"type":133,"name":190,"callback":191,"file":165,"line":192},"wp_login_failed","handle_login_failed",137,{"type":133,"name":194,"callback":195,"priority":82,"file":165,"line":196},"wp_login","reset_failed_attempts",139,{"type":133,"name":198,"callback":199,"file":165,"line":200},"wp_logout","redirect_to_home_after_logout",141,{"type":144,"name":202,"callback":203,"priority":82,"file":165,"line":204},"login_url","custom_login_url",143,{"type":133,"name":134,"callback":206,"file":165,"line":207},"handle_custom_login_request",145,{"type":133,"name":134,"callback":209,"file":210,"line":158},"handle_redirects","includes\\class-surfl-redirect.php",{"type":144,"name":145,"callback":146,"file":212,"line":213},"includes\\class-surfl-restore-db.php",62,{"type":144,"name":145,"callback":146,"file":212,"line":215},486,{"type":133,"name":150,"callback":217,"file":218,"line":219},"closure","surf-link.php",64,{"type":133,"name":221,"callback":222,"file":218,"line":84},"after_uninstall","surflink_fs_uninstall_cleanup",{"type":144,"name":224,"callback":146,"file":218,"line":225},"pricing\u002Fshow_annual_in_monthly",75,{"type":133,"name":227,"callback":228,"file":218,"line":229},"plugins_loaded","surfl_plugin_initialize",114,[231,236,239,243,246,251,255,259,262,266,269,273,276,281,284,288,292,296,300,304,308,311,315,319,322,326,330,334,337,341,345,349,353,357,361,365,370,374,377,380,384,387,390,394,398,402,405,408,411,414,417,420],{"action":232,"nopriv":233,"callback":234,"hasNonce":233,"hasCapCheck":233,"file":136,"line":235},"surfl_delete_single_404_log",false,"ajax_single_404_delete",22,{"action":237,"nopriv":233,"callback":238,"hasNonce":233,"hasCapCheck":233,"file":136,"line":142},"surfl_make_404_to_410","ajax_make_410",{"action":240,"nopriv":233,"callback":241,"hasNonce":233,"hasCapCheck":233,"file":136,"line":242},"surfl_bulk_delete_404_surfl_logs","ajax_bulk_delete_404",28,{"action":244,"nopriv":233,"callback":245,"hasNonce":233,"hasCapCheck":233,"file":136,"line":11},"surfl_bulk_make_410","ajax_bulk_make_410",{"action":247,"nopriv":233,"callback":248,"hasNonce":233,"hasCapCheck":249,"file":136,"line":250},"surfl_empty_404","ajax_empty_404",true,32,{"action":252,"nopriv":233,"callback":253,"hasNonce":233,"hasCapCheck":249,"file":141,"line":254},"surfl_delete_410","ajax_delete_410",26,{"action":256,"nopriv":233,"callback":257,"hasNonce":233,"hasCapCheck":249,"file":141,"line":258},"surfl_add_single_410","ajax_add_single_410",27,{"action":260,"nopriv":233,"callback":261,"hasNonce":233,"hasCapCheck":249,"file":141,"line":242},"surfl_save_edited_410","ajax_save_edited_410",{"action":263,"nopriv":233,"callback":264,"hasNonce":233,"hasCapCheck":249,"file":141,"line":265},"surfl_bulk_delete_410","ajax_bulk_410_delete",29,{"action":267,"nopriv":233,"callback":268,"hasNonce":233,"hasCapCheck":249,"file":141,"line":11},"surfl_empty_410","ajax_empty_410",{"action":270,"nopriv":233,"callback":271,"hasNonce":233,"hasCapCheck":249,"file":141,"line":272},"surfl_export_410","ajax_export_410",31,{"action":274,"nopriv":233,"callback":275,"hasNonce":233,"hasCapCheck":233,"file":141,"line":250},"surfl_import_410","ajax_import_410",{"action":277,"nopriv":233,"callback":278,"hasNonce":233,"hasCapCheck":249,"file":279,"line":280},"surfl_start_backup","ajax_handle_backup","includes\\class-surfl-br-loader.php",39,{"action":282,"nopriv":233,"callback":283,"hasNonce":233,"hasCapCheck":233,"file":279,"line":158},"surfl_run_file_backup","run_file_backup",{"action":285,"nopriv":233,"callback":286,"hasNonce":233,"hasCapCheck":249,"file":279,"line":287},"surfl_backup_database","handle_database_backup",41,{"action":289,"nopriv":233,"callback":290,"hasNonce":233,"hasCapCheck":249,"file":279,"line":291},"surfl_backup_files","handle_files_backup",43,{"action":293,"nopriv":233,"callback":294,"hasNonce":233,"hasCapCheck":249,"file":279,"line":295},"surfl_finalize_backup_file","ajax_finalize_backup_file",44,{"action":297,"nopriv":233,"callback":298,"hasNonce":233,"hasCapCheck":249,"file":279,"line":299},"surfl_finalizing_backup","ajax_finalizing_backup",45,{"action":301,"nopriv":233,"callback":302,"hasNonce":233,"hasCapCheck":249,"file":279,"line":303},"surfl_check_pending_upload","ajax_check_pending_upload",46,{"action":305,"nopriv":233,"callback":306,"hasNonce":233,"hasCapCheck":249,"file":279,"line":307},"surfl_check_db_info","ajax_check_db_info",47,{"action":309,"nopriv":233,"callback":310,"hasNonce":233,"hasCapCheck":249,"file":279,"line":166},"surfl_delete_uploaded_backup_dir","ajax_delete_uploaded_backup_dir",{"action":312,"nopriv":233,"callback":313,"hasNonce":233,"hasCapCheck":249,"file":279,"line":314},"surfl_run_restore_backup","run_restore",53,{"action":316,"nopriv":233,"callback":317,"hasNonce":233,"hasCapCheck":249,"file":279,"line":318},"surfl_upload_backup_file_chunk","ajax_upload_backup_file_chunk",54,{"action":320,"nopriv":233,"callback":313,"hasNonce":233,"hasCapCheck":249,"file":279,"line":321},"surfl_restore_uploaded_backup",55,{"action":323,"nopriv":233,"callback":324,"hasNonce":233,"hasCapCheck":249,"file":279,"line":325},"surfl_run_db_replace","run_db_replace",56,{"action":327,"nopriv":233,"callback":328,"hasNonce":233,"hasCapCheck":249,"file":279,"line":329},"surfl_download_backup","ajax_download_backup_content",60,{"action":331,"nopriv":233,"callback":332,"hasNonce":249,"hasCapCheck":249,"file":279,"line":333},"surfl_download_backup_directory","ajax_download_backup_directory",61,{"action":335,"nopriv":233,"callback":336,"hasNonce":233,"hasCapCheck":249,"file":279,"line":219},"surfl_delete_backup_subdir","ajax_delete_backup_subdir",{"action":338,"nopriv":233,"callback":339,"hasNonce":233,"hasCapCheck":249,"file":279,"line":340},"surfl_delete_backup_zip_file","ajax_delete_backup_zip_file",65,{"action":342,"nopriv":233,"callback":343,"hasNonce":233,"hasCapCheck":249,"file":279,"line":344},"surfl_delete_incomplete_backup_zip_file","ajax_delete_incomplete_backup_zip_file",66,{"action":346,"nopriv":233,"callback":347,"hasNonce":233,"hasCapCheck":249,"file":279,"line":348},"surfl_bulk_delete_backups","ajax_bulk_delete_backups",67,{"action":350,"nopriv":233,"callback":351,"hasNonce":233,"hasCapCheck":249,"file":279,"line":352},"surfl_empty_backup_directory","ajax_empty_backup_directory",68,{"action":354,"nopriv":233,"callback":355,"hasNonce":233,"hasCapCheck":249,"file":279,"line":356},"surfl_browse_backup_contents","ajax_surfl_browse_backup_contents",71,{"action":358,"nopriv":233,"callback":359,"hasNonce":233,"hasCapCheck":249,"file":279,"line":360},"surfl_preview_log","ajax_preview_log",72,{"action":362,"nopriv":233,"callback":363,"hasNonce":233,"hasCapCheck":249,"file":279,"line":364},"surfl_preview_error_log","ajax_preview_error_log",73,{"action":366,"nopriv":233,"callback":367,"hasNonce":249,"hasCapCheck":249,"file":368,"line":369},"surfl_srh_bulk_action","ajax_handle_bulk_action","includes\\class-surfl-fast-sr.php",37,{"action":371,"nopriv":233,"callback":372,"hasNonce":249,"hasCapCheck":249,"file":368,"line":373},"surfl_delete_srh","ajax_delete_srh",38,{"action":375,"nopriv":233,"callback":376,"hasNonce":249,"hasCapCheck":249,"file":368,"line":280},"surfl_process_replace","ajax_process_replace",{"action":378,"nopriv":233,"callback":379,"hasNonce":249,"hasCapCheck":249,"file":368,"line":158},"surfl_process_post_title_replace","ajax_process_post_title_replace",{"action":381,"nopriv":233,"callback":382,"hasNonce":233,"hasCapCheck":233,"file":165,"line":383},"surfl_lh_unban_ip","handle_unban_submission",50,{"action":385,"nopriv":233,"callback":386,"hasNonce":233,"hasCapCheck":233,"file":165,"line":314},"surfl_lh_delete_attempt_ip","handle_delete_attempt_submission",{"action":388,"nopriv":233,"callback":389,"hasNonce":233,"hasCapCheck":233,"file":165,"line":325},"surfl_lh_bulk_action_attempts","handle_bulk_action_attempts",{"action":391,"nopriv":233,"callback":392,"hasNonce":249,"hasCapCheck":249,"file":393,"line":82},"surfl_save_modules","ajax_save_settings","includes\\class-surfl-module-manager.php",{"action":395,"nopriv":233,"callback":396,"hasNonce":249,"hasCapCheck":249,"file":210,"line":397},"surfl_add_redirect_3","ajax_add_redirect",23,{"action":399,"nopriv":233,"callback":400,"hasNonce":249,"hasCapCheck":249,"file":210,"line":401},"surfl_bulk_add_redirects","ajax_bulk_add_redirects",24,{"action":403,"nopriv":233,"callback":404,"hasNonce":249,"hasCapCheck":249,"file":210,"line":142},"surfl_bulk_delete_redirects","ajax_bulk_delete_redirects",{"action":406,"nopriv":233,"callback":407,"hasNonce":249,"hasCapCheck":249,"file":210,"line":254},"surfl_bulk_change_redirect_type","ajax_bulk_change_redirect_type",{"action":409,"nopriv":233,"callback":410,"hasNonce":249,"hasCapCheck":249,"file":210,"line":258},"surfl_empty_redirects","ajax_empty_redirects",{"action":412,"nopriv":233,"callback":413,"hasNonce":249,"hasCapCheck":249,"file":210,"line":242},"surfl_export_redirects","ajax_export_redirects",{"action":415,"nopriv":233,"callback":416,"hasNonce":249,"hasCapCheck":249,"file":210,"line":265},"surfl_import_redirects","ajax_import_redirects",{"action":418,"nopriv":233,"callback":419,"hasNonce":233,"hasCapCheck":249,"file":210,"line":11},"surfl_save_redirect","surfl_save_edit",{"action":421,"nopriv":233,"callback":422,"hasNonce":249,"hasCapCheck":249,"file":210,"line":272},"surfl_delete_redirect","ajax_delete_redirect",[],[],[],52,9,{"dangerousFunctions":429,"sqlUsage":446,"outputEscaping":569,"fileOperations":295,"externalRequests":27,"nonceChecks":580,"capabilityChecks":383,"bundledLibraries":581},[430,434,437,439,441,443],{"fn":431,"file":432,"line":11,"context":433},"unserialize","includes\\class-surfl-br-replace-engine.php","$unserialized = @unserialize( $value, [",{"fn":431,"file":432,"line":435,"context":436},636,"$unserialized = @unserialize( $data, [",{"fn":431,"file":368,"line":438,"context":433},173,{"fn":431,"file":368,"line":440,"context":436},482,{"fn":431,"file":368,"line":442,"context":436},528,{"fn":431,"file":444,"line":352,"context":445},"templates\\surfl-srh.php","$changes = unserialize($item['contents']);",{"prepared":447,"raw":333,"locations":448},160,[449,453,456,457,459,461,462,464,466,468,470,473,475,477,479,481,483,485,487,489,491,493,495,497,500,501,503,505,507,509,511,513,515,517,519,521,523,525,526,527,529,531,533,535,537,539,541,543,545,547,549,551,553,555,557,559,561,563,565,566,567],{"file":450,"line":451,"context":452},"includes\\class-log-cleaner.php",239,"$wpdb->get_var() with variable interpolation",{"file":450,"line":454,"context":455},242,"$wpdb->query() with variable interpolation",{"file":136,"line":158,"context":452},{"file":136,"line":458,"context":452},80,{"file":136,"line":460,"context":452},235,{"file":141,"line":287,"context":452},{"file":141,"line":321,"context":463},"$wpdb->get_results() with variable interpolation",{"file":141,"line":465,"context":452},354,{"file":141,"line":467,"context":463},495,{"file":147,"line":469,"context":452},341,{"file":147,"line":471,"context":472},512,"$wpdb->get_row() with variable interpolation",{"file":147,"line":474,"context":472},562,{"file":147,"line":476,"context":472},592,{"file":432,"line":478,"context":463},195,{"file":432,"line":480,"context":455},262,{"file":432,"line":482,"context":455},263,{"file":432,"line":484,"context":455},264,{"file":432,"line":486,"context":455},265,{"file":432,"line":488,"context":455},266,{"file":432,"line":490,"context":455},267,{"file":432,"line":492,"context":463},556,{"file":432,"line":494,"context":463},574,{"file":432,"line":496,"context":463},612,{"file":432,"line":498,"context":499},709,"$wpdb->get_col() with variable interpolation",{"file":368,"line":299,"context":452},{"file":368,"line":502,"context":472},308,{"file":368,"line":504,"context":463},413,{"file":368,"line":506,"context":463},432,{"file":368,"line":508,"context":452},775,{"file":368,"line":510,"context":452},780,{"file":368,"line":512,"context":452},1062,{"file":368,"line":514,"context":452},1223,{"file":368,"line":516,"context":463},1232,{"file":368,"line":518,"context":455},1268,{"file":165,"line":520,"context":452},453,{"file":165,"line":522,"context":455},817,{"file":165,"line":524,"context":452},899,{"file":210,"line":307,"context":452},{"file":210,"line":333,"context":463},{"file":210,"line":528,"context":463},126,{"file":210,"line":530,"context":452},127,{"file":210,"line":532,"context":452},146,{"file":210,"line":534,"context":452},218,{"file":210,"line":536,"context":455},220,{"file":210,"line":538,"context":499},283,{"file":210,"line":540,"context":463},393,{"file":210,"line":542,"context":463},472,{"file":210,"line":544,"context":452},518,{"file":210,"line":546,"context":463},649,{"file":210,"line":548,"context":452},824,{"file":212,"line":550,"context":455},443,{"file":212,"line":552,"context":455},444,{"file":212,"line":554,"context":455},445,{"file":212,"line":556,"context":455},446,{"file":212,"line":558,"context":455},447,{"file":212,"line":560,"context":455},448,{"file":562,"line":242,"context":455},"includes\\uninstall.php",{"file":562,"line":564,"context":455},34,{"file":562,"line":373,"context":499},{"file":562,"line":295,"context":499},{"file":568,"line":364,"context":463},"templates\\surfl-sr-html.php",{"escaped":570,"rawEcho":33,"locations":571},529,[572,575,577],{"file":279,"line":573,"context":574},1063,"raw output",{"file":165,"line":576,"context":574},699,{"file":578,"line":579,"context":574},"templates\\surfl-backup.php",196,20,[582],{"name":583,"version":584,"knownCves":585},"Freemius","1.0",[],[587,610,689,715,730,756,764,774,782,792,801,816,828,848,858,866,876,885,899,929,938,949,957,968,976,984],{"entryPoint":588,"graph":589,"unsanitizedCount":140,"severity":609},"ajax_finalizing_backup (includes\\class-surfl-br-loader.php:1540)",{"nodes":590,"edges":606},[591,596,600],{"id":592,"type":593,"label":594,"file":279,"line":595},"n0","source","$_POST",1605,{"id":597,"type":598,"label":599,"file":279,"line":595},"n1","transform","→ update_backup_log()",{"id":601,"type":602,"label":603,"file":147,"line":604,"wp_function":605},"n2","sink","file_put_contents() [File Write]",1420,"file_put_contents",[607,608],{"from":592,"to":597,"sanitized":233},{"from":597,"to":601,"sanitized":233},"medium",{"entryPoint":611,"graph":612,"unsanitizedCount":688,"severity":609},"\u003Cclass-surfl-br-loader> (includes\\class-surfl-br-loader.php:0)",{"nodes":613,"edges":676},[614,616,620,622,627,631,636,640,643,645,649,653,655,657,660,663,666,670,673],{"id":592,"type":593,"label":615,"file":279,"line":34},"$_POST (x3)",{"id":597,"type":602,"label":617,"file":279,"line":618,"wp_function":619},"file_get_contents() [SSRF\u002FLFI]",107,"file_get_contents",{"id":601,"type":593,"label":594,"file":279,"line":621},657,{"id":623,"type":602,"label":624,"file":279,"line":625,"wp_function":626},"n3","fopen() [File Access]",694,"fopen",{"id":628,"type":593,"label":629,"file":279,"line":630},"n4","$_GET (x4)",959,{"id":632,"type":602,"label":633,"file":279,"line":634,"wp_function":635},"n5","header() [Header Injection]",997,"header",{"id":637,"type":593,"label":638,"file":279,"line":639},"n6","$_GET",1016,{"id":641,"type":602,"label":624,"file":279,"line":642,"wp_function":626},"n7",1061,{"id":644,"type":593,"label":638,"file":279,"line":639},"n8",{"id":646,"type":602,"label":647,"file":279,"line":573,"wp_function":648},"n9","echo() [XSS]","echo",{"id":650,"type":593,"label":651,"file":279,"line":652},"n10","$_POST (x5)",1346,{"id":654,"type":598,"label":599,"file":279,"line":652},"n11",{"id":656,"type":602,"label":603,"file":147,"line":604,"wp_function":605},"n12",{"id":658,"type":593,"label":594,"file":279,"line":659},"n13",1451,{"id":661,"type":598,"label":662,"file":279,"line":659},"n14","→ backup_database()",{"id":664,"type":602,"label":603,"file":147,"line":665,"wp_function":605},"n15",291,{"id":667,"type":593,"label":668,"file":279,"line":669},"n16","$_POST (x2)",1503,{"id":671,"type":598,"label":672,"file":279,"line":669},"n17","→ file_backup_in_chunk()",{"id":674,"type":602,"label":603,"file":147,"line":675,"wp_function":605},"n18",987,[677,678,679,680,681,682,683,684,685,686,687],{"from":592,"to":597,"sanitized":249},{"from":601,"to":623,"sanitized":249},{"from":628,"to":632,"sanitized":249},{"from":637,"to":641,"sanitized":249},{"from":644,"to":646,"sanitized":249},{"from":650,"to":654,"sanitized":233},{"from":654,"to":656,"sanitized":233},{"from":658,"to":661,"sanitized":233},{"from":661,"to":664,"sanitized":233},{"from":667,"to":671,"sanitized":233},{"from":671,"to":674,"sanitized":233},8,{"entryPoint":690,"graph":691,"unsanitizedCount":27,"severity":714},"\u003Cclass-surfl-404> (includes\\class-surfl-404.php:0)",{"nodes":692,"edges":710},[693,695,699,701,705,706],{"id":592,"type":593,"label":638,"file":136,"line":694},222,{"id":597,"type":602,"label":696,"file":136,"line":697,"wp_function":698},"get_results() [SQLi]",228,"get_results",{"id":601,"type":593,"label":594,"file":136,"line":700},327,{"id":623,"type":602,"label":702,"file":136,"line":703,"wp_function":704},"get_row() [SQLi]",334,"get_row",{"id":628,"type":593,"label":594,"file":136,"line":700},{"id":632,"type":602,"label":707,"file":136,"line":708,"wp_function":709},"get_var() [SQLi]",346,"get_var",[711,712,713],{"from":592,"to":597,"sanitized":249},{"from":601,"to":623,"sanitized":249},{"from":628,"to":632,"sanitized":249},"low",{"entryPoint":716,"graph":717,"unsanitizedCount":27,"severity":714},"display_410_manager_page (includes\\class-surfl-410.php:341)",{"nodes":718,"edges":727},[719,722,723,725],{"id":592,"type":593,"label":720,"file":141,"line":721},"$_GET['surfl_410_msg']",348,{"id":597,"type":602,"label":647,"file":141,"line":721,"wp_function":648},{"id":601,"type":593,"label":638,"file":141,"line":724},352,{"id":623,"type":602,"label":696,"file":141,"line":726,"wp_function":698},361,[728,729],{"from":592,"to":597,"sanitized":249},{"from":601,"to":623,"sanitized":249},{"entryPoint":731,"graph":732,"unsanitizedCount":27,"severity":714},"\u003Cclass-surfl-410> (includes\\class-surfl-410.php:0)",{"nodes":733,"edges":750},[734,736,738,739,740,741,742,745,747,748],{"id":592,"type":593,"label":735,"file":141,"line":173},"$_SERVER",{"id":597,"type":602,"label":696,"file":141,"line":737,"wp_function":698},101,{"id":601,"type":593,"label":720,"file":141,"line":721},{"id":623,"type":602,"label":647,"file":141,"line":721,"wp_function":648},{"id":628,"type":593,"label":638,"file":141,"line":724},{"id":632,"type":602,"label":696,"file":141,"line":726,"wp_function":698},{"id":637,"type":593,"label":743,"file":141,"line":744},"$_FILES",514,{"id":641,"type":602,"label":624,"file":141,"line":746,"wp_function":626},524,{"id":644,"type":593,"label":743,"file":141,"line":744},{"id":646,"type":602,"label":707,"file":141,"line":749,"wp_function":709},581,[751,752,753,754,755],{"from":592,"to":597,"sanitized":249},{"from":601,"to":623,"sanitized":249},{"from":628,"to":632,"sanitized":249},{"from":637,"to":641,"sanitized":249},{"from":644,"to":646,"sanitized":249},{"entryPoint":757,"graph":758,"unsanitizedCount":27,"severity":714},"ajax_preview_log (includes\\class-surfl-br-loader.php:85)",{"nodes":759,"edges":762},[760,761],{"id":592,"type":593,"label":594,"file":279,"line":34},{"id":597,"type":602,"label":617,"file":279,"line":618,"wp_function":619},[763],{"from":592,"to":597,"sanitized":249},{"entryPoint":765,"graph":766,"unsanitizedCount":27,"severity":714},"ajax_preview_error_log (includes\\class-surfl-br-loader.php:139)",{"nodes":767,"edges":772},[768,770],{"id":592,"type":593,"label":594,"file":279,"line":769},147,{"id":597,"type":602,"label":617,"file":279,"line":771,"wp_function":619},159,[773],{"from":592,"to":597,"sanitized":249},{"entryPoint":775,"graph":776,"unsanitizedCount":27,"severity":714},"ajax_upload_backup_file_chunk (includes\\class-surfl-br-loader.php:646)",{"nodes":777,"edges":780},[778,779],{"id":592,"type":593,"label":594,"file":279,"line":621},{"id":597,"type":602,"label":624,"file":279,"line":625,"wp_function":626},[781],{"from":592,"to":597,"sanitized":249},{"entryPoint":783,"graph":784,"unsanitizedCount":27,"severity":714},"ajax_check_db_info (includes\\class-surfl-br-loader.php:884)",{"nodes":785,"edges":790},[786,788],{"id":592,"type":593,"label":594,"file":279,"line":787},891,{"id":597,"type":602,"label":617,"file":279,"line":789,"wp_function":619},908,[791],{"from":592,"to":597,"sanitized":249},{"entryPoint":793,"graph":794,"unsanitizedCount":27,"severity":714},"ajax_download_backup_directory (includes\\class-surfl-br-loader.php:949)",{"nodes":795,"edges":799},[796,798],{"id":592,"type":593,"label":797,"file":279,"line":630},"$_GET (x2)",{"id":597,"type":602,"label":633,"file":279,"line":634,"wp_function":635},[800],{"from":592,"to":597,"sanitized":249},{"entryPoint":802,"graph":803,"unsanitizedCount":27,"severity":714},"ajax_download_backup_content (includes\\class-surfl-br-loader.php:1007)",{"nodes":804,"edges":812},[805,806,808,809,810,811],{"id":592,"type":593,"label":797,"file":279,"line":639},{"id":597,"type":602,"label":633,"file":279,"line":807,"wp_function":635},1056,{"id":601,"type":593,"label":638,"file":279,"line":639},{"id":623,"type":602,"label":624,"file":279,"line":642,"wp_function":626},{"id":628,"type":593,"label":638,"file":279,"line":639},{"id":632,"type":602,"label":647,"file":279,"line":573,"wp_function":648},[813,814,815],{"from":592,"to":597,"sanitized":249},{"from":601,"to":623,"sanitized":249},{"from":628,"to":632,"sanitized":249},{"entryPoint":817,"graph":818,"unsanitizedCount":27,"severity":714},"handle_settings_submission (includes\\class-surfl-loginhider.php:718)",{"nodes":819,"edges":826},[820,822],{"id":592,"type":593,"label":615,"file":165,"line":821},730,{"id":597,"type":602,"label":823,"file":165,"line":824,"wp_function":825},"update_option() [Settings Manipulation]",733,"update_option",[827],{"from":592,"to":597,"sanitized":249},{"entryPoint":829,"graph":830,"unsanitizedCount":27,"severity":714},"\u003Cclass-surfl-loginhider> (includes\\class-surfl-loginhider.php:0)",{"nodes":831,"edges":844},[832,833,834,836,840,842],{"id":592,"type":593,"label":615,"file":165,"line":821},{"id":597,"type":602,"label":823,"file":165,"line":824,"wp_function":825},{"id":601,"type":593,"label":668,"file":165,"line":835},799,{"id":623,"type":602,"label":837,"file":165,"line":838,"wp_function":839},"query() [SQLi]",806,"query",{"id":628,"type":593,"label":638,"file":165,"line":841},897,{"id":632,"type":602,"label":696,"file":165,"line":843,"wp_function":698},910,[845,846,847],{"from":592,"to":597,"sanitized":249},{"from":601,"to":623,"sanitized":249},{"from":628,"to":632,"sanitized":249},{"entryPoint":849,"graph":850,"unsanitizedCount":27,"severity":714},"ajax_save_settings (includes\\class-surfl-module-manager.php:182)",{"nodes":851,"edges":856},[852,854],{"id":592,"type":593,"label":594,"file":393,"line":853},193,{"id":597,"type":602,"label":823,"file":393,"line":855,"wp_function":825},197,[857],{"from":592,"to":597,"sanitized":249},{"entryPoint":859,"graph":860,"unsanitizedCount":27,"severity":714},"\u003Cclass-surfl-module-manager> (includes\\class-surfl-module-manager.php:0)",{"nodes":861,"edges":864},[862,863],{"id":592,"type":593,"label":594,"file":393,"line":853},{"id":597,"type":602,"label":823,"file":393,"line":855,"wp_function":825},[865],{"from":592,"to":597,"sanitized":249},{"entryPoint":867,"graph":868,"unsanitizedCount":27,"severity":714},"ajax_add_redirect (includes\\class-surfl-redirect.php:181)",{"nodes":869,"edges":874},[870,872],{"id":592,"type":593,"label":594,"file":210,"line":871},189,{"id":597,"type":602,"label":707,"file":210,"line":873,"wp_function":709},212,[875],{"from":592,"to":597,"sanitized":249},{"entryPoint":877,"graph":878,"unsanitizedCount":27,"severity":714},"ajax_bulk_change_redirect_type (includes\\class-surfl-redirect.php:555)",{"nodes":879,"edges":883},[880,881],{"id":592,"type":593,"label":594,"file":210,"line":474},{"id":597,"type":602,"label":837,"file":210,"line":882,"wp_function":839},580,[884],{"from":592,"to":597,"sanitized":249},{"entryPoint":886,"graph":887,"unsanitizedCount":27,"severity":714},"ajax_import_redirects (includes\\class-surfl-redirect.php:671)",{"nodes":888,"edges":896},[889,891,893,894],{"id":592,"type":593,"label":743,"file":210,"line":890},678,{"id":597,"type":602,"label":624,"file":210,"line":892,"wp_function":626},688,{"id":601,"type":593,"label":743,"file":210,"line":890},{"id":623,"type":602,"label":707,"file":210,"line":895,"wp_function":709},751,[897,898],{"from":592,"to":597,"sanitized":249},{"from":601,"to":623,"sanitized":249},{"entryPoint":900,"graph":901,"unsanitizedCount":27,"severity":714},"\u003Cclass-surfl-redirect> (includes\\class-surfl-redirect.php:0)",{"nodes":902,"edges":921},[903,905,906,908,910,911,912,913,915,916,917,918,919,920],{"id":592,"type":593,"label":638,"file":210,"line":904},135,{"id":597,"type":602,"label":707,"file":210,"line":204,"wp_function":709},{"id":601,"type":593,"label":907,"file":210,"line":904},"$_GET (x3)",{"id":623,"type":602,"label":696,"file":210,"line":909,"wp_function":698},156,{"id":628,"type":593,"label":594,"file":210,"line":871},{"id":632,"type":602,"label":707,"file":210,"line":873,"wp_function":709},{"id":637,"type":593,"label":594,"file":210,"line":871},{"id":641,"type":602,"label":696,"file":210,"line":914,"wp_function":698},384,{"id":644,"type":593,"label":668,"file":210,"line":474},{"id":646,"type":602,"label":837,"file":210,"line":882,"wp_function":839},{"id":650,"type":593,"label":743,"file":210,"line":890},{"id":654,"type":602,"label":624,"file":210,"line":892,"wp_function":626},{"id":656,"type":593,"label":743,"file":210,"line":890},{"id":658,"type":602,"label":707,"file":210,"line":895,"wp_function":709},[922,923,924,925,926,927,928],{"from":592,"to":597,"sanitized":249},{"from":601,"to":623,"sanitized":249},{"from":628,"to":632,"sanitized":249},{"from":637,"to":641,"sanitized":249},{"from":644,"to":646,"sanitized":249},{"from":650,"to":654,"sanitized":249},{"from":656,"to":658,"sanitized":249},{"entryPoint":930,"graph":931,"unsanitizedCount":140,"severity":937},"display_logs_page (includes\\class-surfl-404.php:214)",{"nodes":932,"edges":935},[933,934],{"id":592,"type":593,"label":638,"file":136,"line":694},{"id":597,"type":602,"label":696,"file":136,"line":697,"wp_function":698},[936],{"from":592,"to":597,"sanitized":233},"high",{"entryPoint":939,"graph":940,"unsanitizedCount":14,"severity":937},"ajax_make_410 (includes\\class-surfl-404.php:323)",{"nodes":941,"edges":946},[942,943,944,945],{"id":592,"type":593,"label":594,"file":136,"line":700},{"id":597,"type":602,"label":702,"file":136,"line":703,"wp_function":704},{"id":601,"type":593,"label":594,"file":136,"line":700},{"id":623,"type":602,"label":707,"file":136,"line":708,"wp_function":709},[947,948],{"from":592,"to":597,"sanitized":233},{"from":601,"to":623,"sanitized":233},{"entryPoint":950,"graph":951,"unsanitizedCount":140,"severity":937},"maybe_send_410 (includes\\class-surfl-410.php:97)",{"nodes":952,"edges":955},[953,954],{"id":592,"type":593,"label":735,"file":141,"line":173},{"id":597,"type":602,"label":696,"file":141,"line":737,"wp_function":698},[956],{"from":592,"to":597,"sanitized":233},{"entryPoint":958,"graph":959,"unsanitizedCount":14,"severity":937},"ajax_import_410 (includes\\class-surfl-410.php:512)",{"nodes":960,"edges":965},[961,962,963,964],{"id":592,"type":593,"label":743,"file":141,"line":744},{"id":597,"type":602,"label":624,"file":141,"line":746,"wp_function":626},{"id":601,"type":593,"label":743,"file":141,"line":744},{"id":623,"type":602,"label":707,"file":141,"line":749,"wp_function":709},[966,967],{"from":592,"to":597,"sanitized":233},{"from":601,"to":623,"sanitized":233},{"entryPoint":969,"graph":970,"unsanitizedCount":140,"severity":937},"handle_bulk_action_attempts (includes\\class-surfl-loginhider.php:790)",{"nodes":971,"edges":974},[972,973],{"id":592,"type":593,"label":594,"file":165,"line":835},{"id":597,"type":602,"label":837,"file":165,"line":838,"wp_function":839},[975],{"from":592,"to":597,"sanitized":233},{"entryPoint":977,"graph":978,"unsanitizedCount":140,"severity":937},"display_site_attempts (includes\\class-surfl-loginhider.php:890)",{"nodes":979,"edges":982},[980,981],{"id":592,"type":593,"label":638,"file":165,"line":841},{"id":597,"type":602,"label":696,"file":165,"line":843,"wp_function":698},[983],{"from":592,"to":597,"sanitized":233},{"entryPoint":985,"graph":986,"unsanitizedCount":33,"severity":937},"render_li_red_page (includes\\class-surfl-redirect.php:131)",{"nodes":987,"edges":992},[988,989,990,991],{"id":592,"type":593,"label":638,"file":210,"line":904},{"id":597,"type":602,"label":707,"file":210,"line":204,"wp_function":709},{"id":601,"type":593,"label":797,"file":210,"line":904},{"id":623,"type":602,"label":696,"file":210,"line":909,"wp_function":698},[993,994],{"from":592,"to":597,"sanitized":233},{"from":601,"to":623,"sanitized":233},{"summary":996,"deductions":997},"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.",[998,1000,1003],{"reason":999,"points":82},"Unprotected AJAX handlers",{"reason":1001,"points":1002},"High severity taint flows",15,{"reason":1004,"points":1005},"Dangerous unserialize function used",7,"2026-03-16T22:37:43.985Z",{"wat":1008,"direct":1027},{"assetPaths":1009,"generatorPatterns":1017,"scriptPaths":1018,"versionParams":1019},[1010,1011,1012,1013,1014,1015,1016],"\u002Fwp-content\u002Fplugins\u002Fsurflink\u002Fassets\u002Fjs\u002Fsurfl.js","\u002Fwp-content\u002Fplugins\u002Fsurflink\u002Fassets\u002Fjs\u002Fredirects.js","\u002Fwp-content\u002Fplugins\u002Fsurflink\u002Fassets\u002Fcss\u002Fsurfl.css","\u002Fwp-content\u002Fplugins\u002Fsurflink\u002Fassets\u002Fcss\u002Fenhanced-redirects.css","\u002Fwp-content\u002Fplugins\u002Fsurflink\u002Fassets\u002Fcss\u002F404-manager.css","\u002Fwp-content\u002Fplugins\u002Fsurflink\u002Fassets\u002Fcss\u002Fshortcodes.css","\u002Fwp-content\u002Fplugins\u002Fsurflink\u002Fassets\u002Fcss\u002Flogin-hider.css",[],[1010,1011],[1020,1021,1022,1023,1024,1025,1026],"surfl.js?ver=","redirects.js?ver=","surfl.css?ver=","enhanced-redirects.css?ver=","404-manager.css?ver=","shortcodes.css?ver=","login-hider.css?ver=",{"cssClasses":1028,"htmlComments":1039,"htmlAttributes":1064,"restEndpoints":1069,"jsGlobals":1074,"shortcodeOutput":1079},[1029,1030,1031,1032,1033,1034,1035,1036,1037,1038],"surfl-dashboard-wrapper","surfl-admin-menu","surfl-dashboard-title","surfl-dashboard-content","surfl-redirects-table","surfl-redirect-row","surfl-404-list","surfl-shortcode-editor-button","surfl-login-hider-settings","surfl-module-manager-item",[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063],"\u003C!-- DO NOT REMOVE THIS IF, IT IS ESSENTIAL FOR THE","function_exists CALL ABOVE TO PROPERLY WORK.","Include Freemius SDK.","Init Freemius.","Signal that SDK was initiated.","Add plugin settings link (must be added after plugins_loaded to avoid translation warnings)","Prevent direct access.","If the plugin is active and the user has the capability to manage options","Check if the current request is for the login page","Hook to enqueue assets.","Main admin script","Redirects script","Admin CSS","Enhanced Redirects CSS","404 Manager CSS","Shortcodes CSS","Login Hider CSS","If the current hook is in the admin area and the plugin is enabled","If the hook suffix is related to Surflink pages","Localize the JavaScript object for the Redirects script","Check if shortcode is enabled before enqueuing its assets","If the hook suffix is related to Surflink pages for Login Hider","Localize the JavaScript object for the Login Hider script","Check if the current hook is in the admin area",[1065,1066,1067,1068],"data-surfl-id","data-redirect-id","data-shortcode-type","data-login-hider-setting",[1070,1071,1072,1073],"\u002Fwp-json\u002Fsurflink\u002Fv1\u002Fredirects","\u002Fwp-json\u002Fsurflink\u002Fv1\u002F404","\u002Fwp-json\u002Fsurflink\u002Fv1\u002Fsettings","\u002Fwp-json\u002Fsurflink\u002Fv1\u002Floginhider",[1075,1076,1077,1078],"surflJqObj","SURFL_AJAX_REDIRECTS","SURFL_LOGINHIDER_SETTINGS","surfl_localize_data",[1080,1081,1082,1083],"[surfl_redirect_list]","[surfl_404_log]","[surfl_login_hider_status]","[surfl_link_shortener_form]"]