{"id":14904,"date":"2025-01-22T11:21:32","date_gmt":"2025-01-22T11:21:32","guid":{"rendered":"https:\/\/wpfreelancer.dev\/?page_id=14904"},"modified":"2025-11-29T08:08:52","modified_gmt":"2025-11-29T08:08:52","slug":"malware-veiligheidscontrole","status":"publish","type":"page","link":"https:\/\/wpfreelancer.dev\/nl\/malware-veiligheidscontrole","title":{"rendered":"Malware- en beveiligingscontrole"},"content":{"rendered":"<section class=\"bde-section-14904-100 bde-section\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><h1 id=\"hero-contact__h1\" class=\"bde-heading-14904-101 bde-heading\">\nIs uw website veilig? <span class='heading_title_yellow'>Scannen op malware<\/span> &amp; Kwetsbaarheden Nu!<br><br>\n<\/h1><div class=\"bde-text-14904-102 bde-text\">\nUw website scannen op bedreigingen\n<\/div><\/div>\n<\/section><section id=\"website-speed-test\" class=\"bde-section-14904-148 bde-section\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><h3 id=\"sitespeedtest\" class=\"bde-heading-14904-149 bde-heading\">\nmalware scanner\n<\/h3><div class=\"bde-text-14904-150 bde-text\">\nDeze gratis scan geeft een eerste indicatie van mogelijke malware- of beveiligingsproblemen op basis van externe databases zoals VirusTotal.\nHet betreft een snelle controle en vervangt geen uitgebreide beveiligingsaudit of handmatige analyse\n<\/div><div class=\"bde-shortcode-14904-151 bde-shortcode url-scanner\">    <style>\n        .wpf-ums{max-width:1100px;margin:0 auto;}\n        .wpf-ums-hero{border-radius:28px;padding:22px;background:radial-gradient(900px 220px at 50% -40%, rgba(90,110,255,.35), rgba(18,16,45,0)) , linear-gradient(135deg,#0f0e2a,#171545 40%,#0b0a22);box-shadow:0 18px 60px rgba(0,0,0,.35);color:#fff;}\n        .wpf-ums-form{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}\n        \/* More compact URL field (closer to the Speed Analyzer look). *\/\n        .wpf-ums-pill{flex:1;min-width:260px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:999px;background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.12);}\n        .wpf-ums-input{flex:1;background:transparent;border:none;outline:none;color:#fff;font-size:15px;line-height:20px;}\n        .wpf-ums-btn{appearance:none;border:none;border-radius:999px;padding:10px 16px;background:linear-gradient(135deg,#2c2aa0,#11104a);color:#fff;font-weight:700;cursor:pointer;}\n        .wpf-ums-btn:hover{filter:brightness(1.08)}\n        .wpf-ums-progress{margin-top:14px;display:none;align-items:center;gap:12px;padding:12px 14px;border-radius:999px;background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.10);}\n        .wpf-ums-bar{height:8px;flex:1;border-radius:999px;background:rgba(255,255,255,.10);overflow:hidden;}\n        .wpf-ums-bar > span{display:block;height:100%;width:0%;background:rgba(242,201,76,.85);transition:width .4s ease;}\n        .wpf-ums-results{margin-top:18px;display:none;}\n        .wpf-ums-card{border-radius:22px;padding:18px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);}\n        .wpf-ums-title{margin:0 0 10px;font-size:18px;font-weight:700;}\n        .wpf-ums-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}\n        @media(max-width:900px){.wpf-ums-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}\n        @media(max-width:520px){.wpf-ums-grid{grid-template-columns:1fr;}}\n        .wpf-ums-metric{border-radius:18px;padding:14px;background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.10);}\n        .wpf-ums-metric small{display:block;color:rgba(255,255,255,.72);margin-bottom:6px}\n        .wpf-ums-metric strong{font-size:22px}\n        .wpf-ums-ok{color:#1fe0a0}\n        .wpf-ums-bad{color:#ff6b6b}\n        .wpf-ums-muted{color:rgba(255,255,255,.72)}\n        .wpf-ums-cta a{display:inline-block;margin-top:12px;text-decoration:none;border-radius:999px;padding:10px 16px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.18);color:#fff;font-weight:700;}\n        .wpf-ums-cta a:hover{color:#fff !important;filter:brightness(1.06);}\n        .wpf-ums-warning{margin-top:14px;padding:14px 16px;border-radius:18px;background:rgba(0,0,0,.20);border:1px solid rgba(255,255,255,.10);color:rgba(255,255,255,.78);font-size:14px;line-height:1.5;}\n        .wpf-ums-warning strong{color:#f2c94c;}\n        .wpf-ums-spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.25);border-top-color:#f2c94c;animation:wpfUmsSpin .9s linear infinite;}\n        @keyframes wpfUmsSpin{to{transform:rotate(360deg);}}\n        .wpf-ums-progress.wpf-ums-indeterminate .wpf-ums-bar>span{width:35%;animation:wpfUmsIndet 1.1s ease-in-out infinite;}\n        @keyframes wpfUmsIndet{0%{transform:translateX(-120%);}100%{transform:translateX(320%);}}\n    \n\/* Speed Analyzer style progress *\/\n.wpf-sa-progress{margin-top:14px}\n.wpf-sa-progress-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}\n.wpf-sa-progress-text{font-size:14px;line-height:20px;opacity:.92}\n.wpf-sa-spinner{width:16px;height:16px;border-radius:999px;border:2px solid rgba(255,255,255,.25);border-top-color:rgba(255,255,255,.95);animation:wpf-sa-spin 0.9s linear infinite;flex:0 0 auto}\n@keyframes wpf-sa-spin{to{transform:rotate(360deg)}}\n.wpf-sa-bar{position:relative;height:8px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.12)}\n.wpf-sa-bar-inner{position:absolute;inset:0;width:35%;border-radius:999px;background:rgba(255,255,255,.55);animation:wpf-sa-indeterminate 1.2s ease-in-out infinite}\n@keyframes wpf-sa-indeterminate{0%{transform:translateX(-120%)}50%{transform:translateX(140%)}100%{transform:translateX(320%)}}\n\n\n.wpf-ms-disclaimer{margin-top:16px;padding:14px 14px;border-radius:16px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.10)}\n.wpf-ms-disclaimer-title{font-weight:700;margin-bottom:6px}\n.wpf-ms-disclaimer-text{font-size:13px;line-height:1.5;opacity:.92}\n\n<\/style>\n\n    <div class=\"wpf-ums\">\n        <div class=\"wpf-ums-hero\">\n            <form id=\"url-scanner-form\" method=\"post\" class=\"wpf-ums-form\" action=\"\">\n                <div class=\"wpf-ums-pill\">\n                    <input type=\"url\" id=\"scan-url\" name=\"scan_url\" class=\"wpf-ums-input\" placeholder=\"https:\/\/jouwwebsite.nl\" required>\n                <\/div>\n                <button type=\"button\" id=\"scan-button\" class=\"wpf-ums-btn\">Start analyse<\/button>\n            <input type=\"hidden\" name=\"trp-form-language\" value=\"nl\"\/><\/form>\n\n            <div id=\"scan-progress\" class=\"wpf-ums-progress\" aria-live=\"polite\">\n                <span class=\"wpf-ums-muted\">Analyseren...<\/span>\n                <div class=\"wpf-ums-bar\"><span id=\"scan-progress-bar\"><\/span><\/div>\n            <\/div>\n\n            <div id=\"scan-results\" class=\"wpf-ums-results\">\n                <div class=\"wpf-ums-card\"><span class=\"wpf-ums-muted\">De resultaten verschijnen hier.<\/span><\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        document.getElementById('scan-button').addEventListener('click', function () {\n            const scanUrl = document.getElementById('scan-url').value;\n            const resultsDiv = document.getElementById('scan-results');\n            const progressWrap = document.getElementById('scan-progress');\n            const progressBar = document.getElementById('scan-progress-bar');\n\n            if (!scanUrl) {\n                resultsDiv.style.display = 'block';\n                resultsDiv.innerHTML = '<div class=\"wpf-ums-card\"><span class=\"wpf-ums-bad\">Please enter a valid URL.<\/span><\/div>';\n                return;\n            }\n\n            resultsDiv.style.display = 'block';\n            resultsDiv.innerHTML = '<div class=\"wpf-ums-card\"><span class=\"wpf-ums-muted\">Submitting URL for analysis\u2026<\/span><\/div>';\n            progressWrap.style.display = 'flex';\n                        progressWrap.classList.add('wpf-ums-indeterminate');\n                        progressBar.style.width = '35%';\n            progressBar.style.width = '20%';\n\n            fetch('https:\/\/wpfreelancer.dev\/wp-admin\/admin-ajax.php', {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application\/x-www-form-urlencoded',\n                },\n                body: new URLSearchParams({\n                    action: 'submit_url',\n                    scan_url: scanUrl,\n                    _ajax_nonce: 'a4d339b154'\n                }),\n            })\n                .then(response => response.json())\n                .then(data => {\n                    console.log(\"API Response:\", data);\n                    if (data.success && data.data && data.data.id) {\n                        const analysisId = data.data.id;\n                        resultsDiv.innerHTML = '<div class=\"wpf-ums-card\"><span class=\"wpf-ums-muted\">URL submitted successfully. Waiting for analysis\u2026<\/span><\/div>';\n                        progressBar.style.width = '45%';\n                        pollAnalysisResults(analysisId, resultsDiv);\n                    } else {\n                        progressWrap.style.display = 'none';\n                        progressWrap.classList.remove('wpf-ums-indeterminate');\n                        resultsDiv.innerHTML = `<div class=\"wpf-ums-card\"><span class=\"wpf-ums-bad\">Error: Unable to retrieve analysis ID.<\/span><div class=\"wpf-ums-muted\" style=\"margin-top:8px;white-space:pre-wrap;word-break:break-word;\">${JSON.stringify(data)}<\/div><\/div>`;\n                        console.error(\"Error retrieving analysis ID:\", data);\n                    }\n                })\n                .catch(error => {\n                    progressWrap.style.display = 'none';\n                        progressWrap.classList.remove('wpf-ums-indeterminate');\n                    resultsDiv.innerHTML = `<div class=\"wpf-ums-card\"><span class=\"wpf-ums-bad\">An error occurred:<\/span> ${error.message}<\/div>`;\n                    console.error(\"Error in submission:\", error);\n                });\n        });\n\n        function pollAnalysisResults(analysisId, resultsDiv, retries = 10) {\n            const progressWrap = document.getElementById('scan-progress');\n            const progressBar = document.getElementById('scan-progress-bar');\n            fetch('https:\/\/wpfreelancer.dev\/wp-admin\/admin-ajax.php', {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application\/x-www-form-urlencoded',\n                },\n                body: new URLSearchParams({\n                    action: 'fetch_results',\n                    analysis_id: analysisId,\n                    _ajax_nonce: 'a4d339b154'\n                }),\n            })\n                .then(response => response.json())\n                .then(data => {\n                    console.log(\"Polling Response:\", data);\n                    if (data.success && data.data && data.data.attributes) {\n                        const stats = data.data.attributes.last_analysis_stats || {};\n                        const hasIssues = stats.malicious > 0 || stats.suspicious > 0;\n\n                        progressWrap.style.display = 'none';\n                        progressWrap.classList.remove('wpf-ums-indeterminate');\n                        progressBar.style.width = '100%';\n\n                        resultsDiv.innerHTML = `\n                            <div class=\"wpf-ums-card\">\n                                <div class=\"wpf-ums-title\">Scan Results<\/div>\n                                <div class=\"wpf-ums-grid\">\n                                    <div class=\"wpf-ums-metric\"><small>Malicious<\/small><strong class=\"${stats.malicious > 0 ? 'wpf-ums-bad' : 'wpf-ums-ok'}\">${stats.malicious || 0}<\/strong><\/div>\n                                    <div class=\"wpf-ums-metric\"><small>Suspicious<\/small><strong class=\"${stats.suspicious > 0 ? 'wpf-ums-bad' : 'wpf-ums-ok'}\">${stats.suspicious || 0}<\/strong><\/div>\n                                    <div class=\"wpf-ums-metric\"><small>Harmless<\/small><strong class=\"wpf-ums-ok\">${stats.harmless || 0}<\/strong><\/div>\n                                    <div class=\"wpf-ums-metric\"><small>Undetected<\/small><strong>${stats.undetected || 0}<\/strong><\/div>\n                                <\/div>\n                                <div class=\"wpf-ums-cta\">\n                                    ${hasIssues ? '<div class=\"wpf-ums-bad\" style=\"margin-top:12px;font-weight:700;\">Potential issues detected.<\/div>' + '<div class=\"wpf-ums-warning\"><strong>Important note:<\/strong> this URL check is a quick, high-level snapshot and a moment in time based on VirusTotal\u2019s latest threat intelligence. It does <strong>not<\/strong> replace a full malware and integrity scan of your website. For a complete and reliable assessment (files, database, backdoors, persistence), a comprehensive malware scan is strongly recommended.<\/div>' + '<a class=\"wpf-ums-contact-btn\" href=\"https:\/\/wpfreelancer.dev\/contact\/\">Hire me today<\/a>' : '<div class=\"wpf-ums-ok\" style=\"margin-top:12px;font-weight:700;\">Everything looks fine.<\/div>' + '<div class=\"wpf-ums-warning\"><strong>Important note:<\/strong> this URL check is a quick, high-level snapshot and a moment in time based on VirusTotal\u2019s latest threat intelligence. It does <strong>not<\/strong> replace a full malware and integrity scan of your website. For a complete and reliable assessment (files, database, backdoors, persistence), a comprehensive malware scan is strongly recommended.<\/div>' + '<a class=\"wpf-ums-contact-btn\" href=\"https:\/\/wpfreelancer.dev\/contact\/\">Contact me<\/a>' }\n                                <\/div>\n                            <\/div>\n                        `;\n                    } else {\n                        const pendingMsg = (data && data.data && data.data.error) ? data.data.error : '';\n                        if (pendingMsg === 'Analysis still pending') {\n                        if (retries > 0) {\n                            progressBar.style.width = (100 - (retries * 5)) + '%';\n                            setTimeout(() => pollAnalysisResults(analysisId, resultsDiv, retries - 1), 15000); \/\/ Retry after 15 seconds\n                        } else {\n                            progressWrap.style.display = 'none';\n                        progressWrap.classList.remove('wpf-ums-indeterminate');\n                            resultsDiv.innerHTML = `<div class=\"wpf-ums-card\"><span class=\"wpf-ums-bad\">Unable to fetch results after multiple attempts.<\/span><div class=\"wpf-ums-muted\" style=\"margin-top:8px;\">Please try again later.<\/div><\/div>`;\n                        }\n                        return;\n                        }\n\n                        progressWrap.style.display = 'none';\n                        progressWrap.classList.remove('wpf-ums-indeterminate');\n                        const msg = (data && data.data && data.data.error) ? data.data.error : (data && data.error ? data.error : 'Unable to fetch results.');\n                        resultsDiv.innerHTML = `<div class=\"wpf-ums-card\"><span class=\"wpf-ums-bad\">Error:<\/span> ${msg}<\/div>`;\n                        console.error(\"Error fetching results:\", data);\n                    }\n                })\n                .catch(error => {\n                    if (retries > 0) {\n                        console.error(\"Fetch failed, retrying...\", error);\n                        setTimeout(() => pollAnalysisResults(analysisId, resultsDiv, retries - 1), 15000);\n                    } else {\n                        progressWrap.style.display = 'none';\n                        progressWrap.classList.remove('wpf-ums-indeterminate');\n                        resultsDiv.innerHTML = `<div class=\"wpf-ums-card\"><span class=\"wpf-ums-bad\">An error occurred:<\/span> ${error.message}. Unable to fetch results after multiple attempts.<\/div>`;\n                        console.error(\"Error in fetching results:\", error);\n                    }\n                });\n        }\n    <\/script>\n    <\/div><\/div>\n<\/section>","protected":false},"excerpt":{"rendered":"<p>Is Your Website Secure? Scan for Malware &#038; Vulnerabilities Now! Scan Your Website for Threats malware &#038; security checker Enter a URL and our scanner will analyze it using VirusTotal&#8217;s database. The scanner checks for indicators of malware, phishing, and other malicious activities reported by multiple security vendors and domain blacklists. It provides a quick [&hellip;]<\/p>\n","protected":false},"author":22087,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Malware & Security Checker | Scan Your Website for Threats","_seopress_titles_desc":"Ensure your website's security with our free Malware & Security Checker. Scan for malware, vulnerabilities, and threats in seconds to protect your online presence.","_seopress_robots_index":"","_seopress_analysis_target_kw":"","_breakdance_hide_in_design_set":false,"_breakdance_tags":"","footnotes":""},"class_list":["post-14904","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wpfreelancer.dev\/nl\/wp-json\/wp\/v2\/pages\/14904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpfreelancer.dev\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wpfreelancer.dev\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wpfreelancer.dev\/nl\/wp-json\/wp\/v2\/users\/22087"}],"replies":[{"embeddable":true,"href":"https:\/\/wpfreelancer.dev\/nl\/wp-json\/wp\/v2\/comments?post=14904"}],"version-history":[{"count":0,"href":"https:\/\/wpfreelancer.dev\/nl\/wp-json\/wp\/v2\/pages\/14904\/revisions"}],"wp:attachment":[{"href":"https:\/\/wpfreelancer.dev\/nl\/wp-json\/wp\/v2\/media?parent=14904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}