Google has become the latest high-profile victim in a sophisticated Salesforce data theft campaign orchestrated by the UNC6040 threat group , the sam…
Perplexity AI has been caught using undisclosed "stealth" crawlers to bypass website restrictions and access content that site owners expl…
A new CrowdStrike threat hunting report has exposed the rise of "enterprising adversaries" who are leveraging artificial intelligence and s…
Security researcher James Kettle is going to present significant findings on HTTP desync vulnerabilities at upcoming cybersecurity conferences, demon…
Are you looking to take your fintech startup to the next level? It’s time to rethink how you approach software development. What if you could build a…
As of mid-2025, X users in the UK, Ireland, and parts of the EU are being asked to verify their age to access sensitive content, following the implem…
You think you're private. That no one knows what sites you signed up for in college, what silly comment you left on a forum in 2012, or what sket…
A severe macOS vulnerability discovered by Microsoft researchers could have allowed attackers to steal highly sensitive data from Apple Intelligence …
A critical security flaw in the popular AI-powered coding platform Base44 allowed attackers to bypass authentication controls and gain unauthorized a…
Clinicians know the unrest that spreads when a label printer hesitates. Specimen tubes sit idle, medication carts stall, and the barcode queue climbs…
const config = {
safeID = 'safelink',
safeURL: ['/p/safelink.html'],
timer: 15,
redirect: true,
text: {
wait: 'The link will appear in 0 second',
direct: 'You’ll be redirected to the download link in 0 second',
shifted: 'Redirecting... [link] if you’re not redirected automatically.',
click: 'Click here',
btn: 'Direct to link.'
}
};
(() => {
const randomURL = url => url[Math.floor(Math.random() * url.length)];
const safeLink = () => config.safeURL.some(path => location.pathname.endsWith(path));
const safeMessage = (text, time) => {
const [start, end] = text.split('0');
return `${start} ${time} ${end}.
`;
};
const outboundLinks = () => {
const links = document.querySelectorAll('a.safeurl[href]');
if (!links.length) return;
links.forEach(anchor => {
const encoded = encodeURIComponent(btoa(anchor.href));
Object.assign(anchor, {
href: `${location.origin}${randomURL(config.safeURL)}?go=${encoded}`,
target: '_self',
rel: 'noopener'
})
})
};
const handleLink = () => {
const params = new URLSearchParams(location.search);
const encoded = params.get('go');
if (!encoded) return;
const link = atob(decodeURIComponent(encoded))
params.delete('go');
history.replaceState({}, '', location.pathname + (params.toString() ? '?' + params : ''));
let counter = config.timer;
const label = config.redirect ? config.text.direct : config.text.wait;
const box = document.getElementById(config.safeID);
if (!box) return;
box.removeAttribute('hidden');
box.innerHTML = safeMessage(label, counter);
const countdown = setInterval(() => {
counter--;
box.innerHTML = safeMessage(label, counter);
if (counter > 0) return;
clearInterval(countdown);
if (config.redirect) {
box.innerHTML = `${config.text.shifted.replace('[link]', `${config.text.click}`)}
`;
location.href = link;
} else {
box.innerHTML = '';
const btn = document.createElement('a');
//btn.className = 'btn';
btn.href = link;
btn.target = '_blank';
btn.rel = 'nofollow noopener noreferrer';
btn.innerHTML = `${config.text.btn}`;
box.appendChild(btn);
}
}, 1000)
};
safeLink() ? handleLink() : outboundLinks();
})();