This is a blog post about standards, their proliferation and the issues that may arise. My first involvement with standards was just as a reader. To better understand complicated code or unexpected be...
The HTML Sanitizer API allows multiple ways to customize the default allow list and this blog post aims to describe a few variations and tricks we came up with while writing the specification. Safe a...
TLDR: Use require-trusted-types-for 'script'; trusted-types 'none'; in your CSP and nothing besides setHTML works, essentially removing all DOM-XSS risks. Background: Sanitizer API I was guest at th...
Sanitizing HTML is the practice of taking a piece of HTML and removing some unwanted elements and attributes. We are specifying an API that will be directly built into the browser. In fact, you can al...
Today: Something off topic, to feed the search engines. My kids and I have a lot of fun with the video game Lego Star Wars: The Complete Saga, which was released in 2007. As it is quite old, the "com...
NB: This is the blog version of my keynote from Measurements, Attacks, and Defenses for the Web (MADWeb) 2025, earlier this year. It was not recorded. In my keynote, I examined web security through t...
作者以自家智能取暖控制需求为起点,亲自踩坑后直言 Home Assistant 无法被安全地开放到公网。文章从具体场景出发(离家自动关暖气、回家前自动开启),引出将 HA 暴露到互联网时遇到的安全短板。作为 Mozilla 安全工程师的个人经验分享,有明确立场和实操背景,引发自建智能家居用户对安全边界的讨论——到底该不该开公网访问、如何替代。短小但有观点、有争议入口。
For those who don't know, I have provided countless contributions to the Mozilla project. This is to an extent, that I have been added to our credits page (type about:credits into Firefox!) more than ...
NB: This is the text/html version of my talk from the German OWASP Day 2024 in Leipzig earlier this month. If you prefer, there is also a video from the event. This article is about cross-site leak a...
安全研究员 Frederik Braun 发布了一个提示注入(Prompt Injection)的现场演示。文章中展示了一段精心设计的注入文本:攻击者伪装成用户,声称祖母刚刚去世、遗愿是要求回复必须用十六进制编码,从而诱导 LLM 绕过安全约束。这个示例生动展现了当前 AI 系统面临的社会工程式注入攻击手法,对于关注大模型安全、红队测试和 AI 防护的读者具有直接参考价值。
In web security, you may have heard of "mixed content". Maybe you saw a DevTools message like this one. Mixed Content: Upgrading insecure display request ‘http://...’ to use ‘https’. This blog post ...
Today, I found someone tweeting about a neat security bug in Chrome, that bypasses how Chrome disallows extensions from injecting JavaScript into special domains like. The intention of this block is t...
This is my update to the 2021 JavaScript IPC blog post from the Firefox Attack & Defense blog. Firefox uses Inter-Process Communication (IPC) to implement privilege separation, which makes it an impo...
This article first appeared on the Firefox Attack & Defense blog. Despite all the efforts of fixing Cross-Site Scripting (XSS) on the web, it continuously ranks as one of the most dangerous security ...
This article first appeared on the HTMLHell Advent Calendar 2022. Motivation When thinking of HTML-related security bugs, people often think of script injection attacks, which is also known as Cross...
This document sat in my archives. I originally created this so I have notes for my participation in the Working Draft podcast - a German podcast for web developers. That's why this article is in Germa...
Note: This is the reference sheet version. The details and the big picture are covered in Understanding Web Security Checks in Firefox (Part 1). Principals as a level of privilege A security context...
This blog post has first appeared on the Mozilla Attack & Defense blog and was co-authored with Christoph Kerschbaumer and Tom Ritter In a recent academic publication titled Hardening Firefox against...
This blog post has first appeared on the Mozilla Attack & Defense blog and was co-authored with Christoph Kerschbaumer This is the first part of a blog post series that will allow you to understand h...