Privacy/Features/Pref to limit number of fonts loaded per tab

From New wiki
Jump to navigation Jump to search
Please use "Edit with form" above to edit this page.

Status

Provide about:config pref to limit number of fonts loaded per tab
Stage Definition
Status In progress
Release target `
Health OK
Status note `

{{#set:Feature name=Provide about:config pref to limit number of fonts loaded per tab

|Feature stage=Definition |Feature status=In progress |Feature version=` |Feature health=OK |Feature status note=` }}

Team

Product manager Sid Stamm
Directly Responsible Individual `
Lead engineer `
Security lead `
Privacy lead `
Localization lead `
Accessibility lead `
QA lead `
UX lead `
Product marketing lead `
Operations lead `
Additional members `

{{#set:Feature product manager=Sid Stamm

|Feature feature manager=` |Feature lead engineer=` |Feature security lead=` |Feature privacy lead=` |Feature localization lead=` |Feature accessibility lead=` |Feature qa lead=` |Feature ux lead=` |Feature product marketing lead=` |Feature operations lead=` |Feature additional members=` }}

Open issues/risks

`

Stage 1: Definition

1. Feature overview

EFF's Panoptclock project showed that the fonts installed (and their order) provide 14 bits of entropy to identify users.

2. Users & use cases

-Privacy enhancing tools/addons such as the Tor browsing bundle that could enable this setting without needing to have a firefox fork. -Web Users wanting to reduce their web fingerprint (maybe triggered by private mode) -Web developers wanting to check the fallbacks of their sites.

3. Dependencies

None

4. Requirements

- Must not break (as in make unreadable) international sites. - Must not leak any extra information per page load (solutions might leak information to the same site between loads are not acceptable). - It must stop CSS and Javascript leaks. - Must not prevent chrome from using local fonts.

Non-goals

-Will not try to prevent bad web renderings (bad sizes due the assumptions on the fonts rendered) -Will not prevent OS identification. Each OS has different default fonts and redenering engines, which have layout differences. -Will not prevent font enumeratioon via plugins such as flash.

Stage 2: Design

5. Functional specification

When the setting is enabled, the system will only render w3c generic fonts (serif, sans-serif, monospace, cursive, or fantasy) or downloadable fonts. This will be more expressive than the 'use_document_fonts' preference.

6. User experience design

There will be no UX. The change will be a preference that would be disabled by default.

Stage 3: Planning

7. Implementation plan

We will make changes on "layout/style/nsRuleNode.cpp" so that the CSS fonts would be limited to our font selection. This will be done in two stages:

1. Only allow generic fonts, this would reuse most of the code on related to use_document_fonts. 2. Also allow webfonts, This will be tricky as we need to create a list of valid dowloaded fonts per document. This list would be then checked at the same point to see of we need font replacement or not.

8. Reviews

Security review

`

Privacy review

`

Localization review

This is my largest concern. Currently I manually test against several non-western pages, but I think need a more automated and more comprehensive test/

Accessibility

`

Quality Assurance review

`

Operations review

`

Stage 4: Development

9. Implementation

This is tagged with bug 732096 https://bugzilla.mozilla.org/show_bug.cgi?id=732096

Stage 5: Release

10. Landing criteria

` {{#set:Feature open issues and risks=` |Feature overview=EFF's Panoptclock project showed that the fonts installed (and their order) provide 14 bits of entropy to identify users. |Feature users and use cases=-Privacy enhancing tools/addons such as the Tor browsing bundle that could enable this setting without needing to have a firefox fork. -Web Users wanting to reduce their web fingerprint (maybe triggered by private mode) -Web developers wanting to check the fallbacks of their sites. |Feature dependencies=None |Feature requirements=- Must not break (as in make unreadable) international sites. - Must not leak any extra information per page load (solutions might leak information to the same site between loads are not acceptable). - It must stop CSS and Javascript leaks. - Must not prevent chrome from using local fonts. |Feature non-goals=-Will not try to prevent bad web renderings (bad sizes due the assumptions on the fonts rendered) -Will not prevent OS identification. Each OS has different default fonts and redenering engines, which have layout differences. -Will not prevent font enumeratioon via plugins such as flash. |Feature functional spec=When the setting is enabled, the system will only render w3c generic fonts (serif, sans-serif, monospace, cursive, or fantasy) or downloadable fonts. This will be more expressive than the 'use_document_fonts' preference. |Feature ux design=There will be no UX. The change will be a preference that would be disabled by default. |Feature implementation plan=We will make changes on "layout/style/nsRuleNode.cpp" so that the CSS fonts would be limited to our font selection. This will be done in two stages:

1. Only allow generic fonts, this would reuse most of the code on related to use_document_fonts. 2. Also allow webfonts, This will be tricky as we need to create a list of valid dowloaded fonts per document. This list would be then checked at the same point to see of we need font replacement or not. |Feature security review=` |Feature privacy review=` |Feature localization review=This is my largest concern. Currently I manually test against several non-western pages, but I think need a more automated and more comprehensive test/ |Feature accessibility review=` |Feature qa review=` |Feature operations review=` |Feature implementation notes=This is tagged with bug 732096 https://bugzilla.mozilla.org/show_bug.cgi?id=732096 |Feature landing criteria=` }}

Feature details

Priority P3
Rank 999
Theme / Goal Advancing Anonymity
Roadmap Privacy
Secondary roadmap `
Feature list `
Project `
Engineering team `

{{#set:Feature priority=P3

|Feature rank=999 |Feature theme=Advancing Anonymity |Feature roadmap=Privacy |Feature secondary roadmap=` |Feature list=` |Feature project=` |Feature engineering team=` }}

Team status notes

  status notes
Products ` `
Engineering ` `
Security ` `
Privacy ` `
Localization ` `
Accessibility ` `
Quality assurance ` `
User experience ` `
Product marketing ` `
Operations ` `

{{#set:Feature products status=`

|Feature products notes=` |Feature engineering status=` |Feature engineering notes=` |Feature security status=` |Feature security health=` |Feature security notes=` |Feature privacy status=` |Feature privacy notes=` |Feature localization status=` |Feature localization notes=` |Feature accessibility status=` |Feature accessibility notes=` |Feature qa status=` |Feature qa notes=` |Feature ux status=` |Feature ux notes=` |Feature product marketing status=` |Feature product marketing notes=` |Feature operations status=` |Feature operations notes=` }}