<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Security on vanityURLs</title><link>https://vanityurls.link/en/tags/security/</link><description>Recent content in Security on vanityURLs</description><generator>Hugo</generator><language>en-CA</language><lastBuildDate>Mon, 15 Jun 2026 22:51:56 -0400</lastBuildDate><atom:link href="https://vanityurls.link/en/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>Accents, IDN, and short-link slugs</title><link>https://vanityurls.link/en/blog/accents-idn-and-short-link-slugs/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/accents-idn-and-short-link-slugs/</guid><description>&lt;p&gt;Accents belong in people names, page copy, titles, and destination websites. They do not belong in vanityURLs short-link slugs.&lt;/p&gt;
&lt;p&gt;That sounds stricter than the modern web really is. Browsers can show internationalized domain names. URLs can carry UTF-8 characters. Search engines can crawl paths with accents. People share links in many languages every day.&lt;/p&gt;
&lt;p&gt;The problem is not whether the internet can represent accents. It can. The problem is whether a short-link slug remains easy to type, review, compare, log, and defend when the same visible word can have more than one technical representation.&lt;/p&gt;</description></item><item><title>Do not turn every Cloudflare knob</title><link>https://vanityurls.link/en/blog/cloudflare-features-not-to-enable-by-default/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/cloudflare-features-not-to-enable-by-default/</guid><description>&lt;p&gt;The Cloudflare dashboard is not a checklist.&lt;/p&gt;
&lt;p&gt;That is the rule. A vanityURLs instance has a narrow job: serve short links from a Worker, keep operational pages behind Access, and let Cloudflare reject obvious noise before application code runs. The baseline controls are documented in &lt;a href="https://vanityurls.link/en/docs/customize/network-protection/"&gt;Network protection&lt;/a&gt;. The product inventory is documented in &lt;a href="https://vanityurls.link/en/docs/reference/cloudflare-products/"&gt;Cloudflare products&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This post is the negative space. It names the knobs that should stay off unless an operator has a reason that survives writing down.&lt;/p&gt;</description></item><item><title>Keep scanner traffic out of the Worker</title><link>https://vanityurls.link/en/blog/layering-cloudflare-protection-around-a-short-link-domain/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/layering-cloudflare-protection-around-a-short-link-domain/</guid><description>&lt;p&gt;A short-link redirector looks simple: receive a slug, look up a destination, redirect.&lt;/p&gt;
&lt;p&gt;The internet supplies the rest. PHP probes. WordPress paths. Odd methods. Bot traffic. Crawlers. Repeated misses for slugs nobody created.&lt;/p&gt;
&lt;p&gt;The Worker should not be the first place that noise gets expensive. vanityURLs keeps the Worker small and deterministic, then uses Cloudflare edge controls for traffic that should never spend Worker CPU or analytics quota.&lt;/p&gt;
&lt;h2 id="block-before-runtime"&gt;Block Before Runtime&lt;/h2&gt;
&lt;p&gt;The Worker still validates destinations and runtime policy. That is the last line of defense, not the first.&lt;/p&gt;</description></item><item><title>Protecting the reputation of a short-link domain</title><link>https://vanityurls.link/en/blog/protecting-the-reputation-of-a-short-link-domain/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/protecting-the-reputation-of-a-short-link-domain/</guid><description>&lt;p&gt;A short-link domain is only useful while people trust it. The domain may be small, personal, internal, or quiet, but browsers, mail providers, scanners, security tools, and recipients still judge it by the destinations it serves.&lt;/p&gt;
&lt;p&gt;That is why vanityURLs treats policy as part of the runtime, not as an optional cleanup task. A redirector can make good links easier to remember, but it can also hide phishing pages, malware downloads, redirect chains, undisclosed trackers, and destinations people did not reasonably expect.&lt;/p&gt;</description></item><item><title>Runtime security for a small redirector</title><link>https://vanityurls.link/en/blog/runtime-security-for-a-small-redirector/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/runtime-security-for-a-small-redirector/</guid><description>&lt;p&gt;Short-link domains are small targets with oversized consequences. A bad redirect can damage trust quickly, and scanner traffic can arrive before the domain is even public. That is why vanityURLs treats simplicity as a security feature, not an aesthetic preference.&lt;/p&gt;
&lt;p&gt;The runtime is not a public link-submission service. It is not a database-backed web application. It is a Git-built redirect engine: validate the registry, deploy static assets, read generated data, and return a redirect, protected page, disabled page, expired page, or localized 404.&lt;/p&gt;</description></item><item><title>The current v8s architecture</title><link>https://vanityurls.link/en/blog/current-architecture/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/current-architecture/</guid><description>&lt;p&gt;The current v8s release is built around a small contract: keep the runtime simple, keep the source of truth in Git, and push abuse filtering as close to the edge as possible.&lt;/p&gt;
&lt;h2 id="the-instance-model"&gt;The instance model&lt;/h2&gt;
&lt;p&gt;An instance has two kinds of files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;defaults/&lt;/code&gt; contains the product defaults, public operational pages, blocklist defaults, robots and LLM crawler guidance, and scripts that should be updated from upstream&lt;/li&gt;
&lt;li&gt;&lt;code&gt;custom/&lt;/code&gt; contains the instance-owned links, schedules, policy replacement, branding, legal pages, and any intentionally local public files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That split is the upgrade story. If instance owners keep their work in &lt;code&gt;custom/&lt;/code&gt;, future releases can refresh &lt;code&gt;defaults/&lt;/code&gt; and &lt;code&gt;scripts/&lt;/code&gt; without trampling local content.&lt;/p&gt;</description></item></channel></rss>