'); else $('#statusscan').append(',
');// errors processingif (result.error.indexOf('External redirect to: ') !== -1) { newsite = result.error.split("External redirect to: ").pop();$('#statusscan').append('
');$('#results').html('
'); }else if (result.error.indexOf('URL can not loaded due robots.txt') !== -1) {$('#statusscan').append('
Error: according to robots.txt the site owner has forbidden to check the site'); $('#results').html(''); }else if (result.error.indexOf('net::ERR_NAME_NOT_RESOLVED') !== -1) {$('#statusscan').append('
Error: the site is not available'); $('#results').html(''); }// other errorselse {$('#statusscan').append('
Error: '+result.error+'
Scan stopped!'); $('#results').html(''); }stoploading(); } else {// draw results template (if first request) ==================================================================================if (document.getElementById("results").innerHTML.length == 0) {template = '';result.violation.forEach(function(violation, i){ template += '
'; template += '
'; template += ' '; template += '
'; template += '
'; template += '
'+translate(violation.name)+' ('+violation.law+')
'; template += '
in process...
'; template += '
'; template += '
'; // hidden by default template += '
'; template += '
'; template += '
'; }); $('#results').html(template);$('#results').css('margin-bottom', '30px'); }// every second refresh ==================================================================================$('#loading').html('');$('#h1title').html('Checking '+result.site);$('#statusscan').html('Please wait...
Total requested: ' + result.requested + ' pages
Total processed: ' + result.scanned + ' pages
');/* every sec. violations refresh */result.violation.forEach(function(violation, i){ if (!$.isEmptyObject(violation.data)) { var urls = ''; // if violation is applicable, draw red block if (violation.applicable == 1){ $('#vicon'+i).html(''); $('#vstatus'+i).hide(); $('#vfound'+i).show(); if (violation.name == 'Prior consent to other than strictly necessary cookies') urls += '
What\'s the Problem:
Cookies installed during the loading of pages are not strictly necessary. For EU users these cookies can be installed after obtaining prior consent (Rec. 30 and Rec. 32 of the GDPR)
How to Solve it:
On the site, you need to add a cookie consent form and block cookies if user consent is not obtained. For details, seethisguide
Pages list:
Below are the webpages loaded and cookies that require prior consent from EU users to be installed:
'; else if (violation.name == 'Safety of personal data collection forms') urls += '
What\'s the Problem:
The pages do not use encryption, so any personal data entered can be intercepted by intruders.
How to Solve it:
You need to install an SSL certificate for the website.
Pages list:
Below are the webpages loaded without encryption:
'; else if (violation.name == 'Prior consent to personal data') urls += '
What\'s the Problem:
Cookies installed during the loading of pages are used to track site visitors for marketing purposes, including displaying relevant ads. For EU users these cookies can be installed after obtaining prior consent (Rec. 30 and Rec. 32 of the GDPR)
How to Solve it:
On the site, you need to add a cookie consent form and block cookies if user consent is not obtained. For details, seethisguide
Pages list:
Below are the webpages loaded and cookies that require prior consent from EU users to be installed:
'; else if (violation.name == 'Personal data is transmitted to \'adequate countries\'') urls += '
What\'s the Problem:
Cookies installed during the loading of pages can be used to track for marketing purposes and be transferred to countries that are not recognised as providing an adequate level of data protection (Art. 45 GDPR)
How to Solve it:
You need to analyse whether the data transfer complies with Articles 46-49 of the GDPR. Otherwise, according to Art. 49 (a) of the GDPR, clear consent should be obtained from EU users.
Pages list:
Below are the webpages loaded and cookies that require prior consent from EU users to be installed:
'; else if (violation.name == 'Other risks of personal data breaches') urls += '
What\'s the Problem:
Some resources are requested without encryption during the loading of pages. It can lead to the modification of downloaded data and as a result, to the breach of personal data.
How to Solve it:
Third-party resources must be downloaded via HTTPS, but if this is not possible, their use is unsafe.
Pages list:
Below are the webpages loaded and requests made to third party hosts without encryption:
'; else urls += '';} // output rules for different violation groups if ( violation.name == 'Prior consent to other than strictly necessary cookies' || violation.name == 'Prior consent to personal data')violation.data.forEach(function(proof) {// group results by method + companyvar grouped = [];proof.result.forEach(function(item){var gkey = item.method + ' (' +item.company + ')';if (!grouped[gkey]) grouped[gkey] = '';grouped[gkey] += item.name + '; ';});// alphabetical sorting and outputvar sorted = sortObject(grouped);urls += '
'+proof.url+'';for (var key in sorted) { urls+= '
' + key + ': ' + sorted[key]; }urls += '
'; }); else if(violation.name == 'Personal data is transmitted to \'adequate countries\'')violation.data.forEach(function(proof) {urls += '
'+proof.url+'';proof.result.forEach(function(item){urls += '
' + item.method + ' ' + item.name + ':';for (var host in item.domain) { urls+= '
• ' + host + ', ' + item.domain[host].ip + ', ' + item.domain[host].country; }});urls += '
'; }); else if(violation.name == 'Safety of personal data collection forms') {urls += '
';violation.data.forEach(function(proof) {urls += ''+proof.url+'
'; });urls += '
'; } else if(violation.name == 'Other risks of personal data breaches') {violation.data.forEach(function(proof) {urls += '
'+proof.url+'';proof.result.forEach(function(item){urls += '
' + item.host + ', requests: ' + item.count;});urls += '
'; }); } elseurls += ''; $('#vlist'+i).html(''+urls+'');}});// final drawing (if task finished) ================================================================================if (result.finished) { $('#h1title').html('Check report: ' + result.site + ''); $('#statusscan').html('Check date: '+ result.date); if (nextCheckDate(result.date)) $('#statusscan').append('
recheck will be available on '+ nextCheckDate(result.date) +'
'); else $('#statusscan').append(',
'); $('#statusscan').append('
Total requested: '+result.requested + ' pages
Total processed: ' + result.scanned + ' pages'); if (result.scanned < result.requested) $('#statusscan').append('
'+(result.requested - result.scanned)+' pages skipped. Usually it happens due to redirect to another site or because of page load problem.
'); var goodExist = 0; var badExist = 0;/* final violation drawing */ result.violation.forEach(function(violation, i) {if (result.scanned == 0) { $('#vicon'+i).html(''); $('#vstatus'+i).html('No one page scanned succesfully'); }else { if ($.isEmptyObject(violation.data)) { $('#vicon'+i).html(''); $('#vstatus'+i).html('The scanner did not find known issues'); goodExist = 1; } else if (violation.name == 'Other risks of personal data breaches' && !$.isEmptyObject(violation.data) && violation.applicable == 0) { $('#vicon'+i).html(''); $('#vstatus'+i).hide(); $('#vfound'+i+' > #foundtext').html('Unsecured connections exist.'); $('#vfound'+i+' > #foundtext').removeAttr('color'); $('#vfound'+i).show(); $('#vlist'+i).prepend( "Unsecured connections found, but it seems that the site does not collect any personal data. Otherwise, you should to secure all connections below."); goodExist = 1; } else badExist = 1; } });// draw report iconif (result.scanned == 0) $('#loading').html('');else if (badExist == 0) $('#loading').html('');else if (goodExist == 0) $('#loading').html(''); else $('#loading').html(''); stoploading(); }} }); timer = setTimeout("loadResults()",1000); } function stoploading() { if (timer) { clearTimeout(timer); timer = 0; }} function sortObject(obj) { return Object.keys(obj).sort().reduce(function (result, key) { result[key] = obj[key]; return result; }, {}); }$(document).ready(function(){ $.ajaxSetup({ cache: false }); loadResults();}); function nextCheckDate(dateCheck) {dateCheck = new Date(dateCheck.split('.').reverse().join('-')); var dateToday = new Date('2024-10-11');if (Math.round(Math.abs((dateToday.getTime() - dateCheck.getTime())/(24*3600*1000))) >= 1) { return false;} else { dateCheck.setSeconds(dateCheck.getSeconds() + 1 * 3600 * 24 ); return ('0' + dateCheck.getDate()).slice(-2) + '.' + ('0' + (dateCheck.getMonth()+1)).slice(-2) + '.' + dateCheck.getFullYear();} } function translate(text) {var dict = { "Safety of personal data collection forms": { ua: "Безпека веб-форм збору персональних даних", ru: "Безопасность веб-форм сбора персональных данных" }, "Prior consent to other than strictly necessary cookies": { ua: "Попередня згода для Cookies, що не є строго необхідними", ru: "Предварительное согласие для Cookies, не являющихся строго необходимыми" }, "Prior consent to personal data": { ua: "Попередня згода на обробку персональних даних", ru: "Предварительное согласие на обработку ПД" }, "Personal data is transmitted to \'adequate countries\'": { ua: "Передача даних до країн з належним рівнем захисту", ru: "Передача данных в страны с надлежащим уровнем защиты" }, "Other risks of personal data breaches": { ua: "Інші ризики витоку персональних даних", ru: "Другие риски утечки персональных данных" },}if (typeof dict[text] !== 'undefined' && '' in dict[text]) return dict[text][""];else return text; }
Share the report: