Category Archives: Firefox

Organizing Life With Multiple Firefox Profiles

Background

Browser profiles have been a part of Firefox since before it was spawned off of the early Mozilla Application Suite in 2002. Though originally added to allow multiple users of a single computer to maintain separate bookmarks, it has generally not received the on-going love and innovation that other built-in features have enjoyed. Its longevity notwithstanding, its necessity has diminished as:

  • Consumer OSes started including system level multi-user switching (starting with WinXP).
  • The explosion of personal mobile devices.

With the introduction of these two trends, there was no longer a widespread need for separate settings within the browser. Each user had their completely distinct environment or isolated device. However despite their seeming obsolescence, browsing profiles can be used today to greatly improve Firefox’s stability, privacy and security mainly due to two main factors:

  • Per-profile extensions/add-ons.
  • Isolation of session data between profiles.

Key Features For The Modern Web

Per-profile extensions/add-ons

One of Firefox’s biggest virtues is its extensive add-on ecosystem. Add-ons allow the user to modify the browser’s appearance and functionality to suit their needs and preferences. Relevant to this discussion, when installing add-ons through the FireFox Add-ons page, they are installed only to the current profile, not system-wide. With this in mind you can narrow the list of installed add-ons to only what makes sense in a given profile’s context. For example you may want the ability to switch User-Agent field in a developer profile, but have no pressing need to do so when generally browsing. On the flip side you may want a script blocker on your general browsing profile but not enabled on your development one. By installing only necessary add-ons you reduce browser bloat, add-on conflicts, and attack surface.

Isolation of session data between profiles

By launching Firefox profiles in their own process (using the -no-remote switch), you can achieve a fair* degree of separation for logins between profiles. This can aid in mitigating cross-site request forgery (CSRF), third-party tracking cookies, and a host of other less-than-helpful aspects of the web as it stands today. Although not a perfect solution it is decidedly better than using only a single profile for all browsing activity.

* I say “fair” because frankly regardless of whatever efforts you may put into separating your browser usage there is an entire web analytics industry built on identifying your web usage and habits despite all barriers that you may try to put up. (As I write this a firm was just caught using WebRTC STUN requests to possibly gleen the local IP addresses from unsuspecting users of nytimes.com, cbnc.com, wired.com, etc).

As an added bonus, by running separate processes you’ll also gain an additional level of stability in that a crash of a given Firefox instance will (usually) not impact the other running instances. If you’re someone that runs multiple browser windows each with multiple tabs open you’ve likely felt the pain when a hiccup in one tab brings down your entire browsing session.

Managing Profiles

Running Firfox’s profile manager
  • From command line: firefox --ProfileManager
Creating new profiles
  • From profile manager: Click Create Profile…
  • From command line: firefox -CreateProfile mynewprofile
Running new profiles
  • From profile manager: Select profile, click Start Firefox
  • From command line: firefox -no-remote -P mynewprofile

Profile Workflows

Once you begin to use multiple profiles more often you will develop a natural workflow that works best for you. There seems to be a couple general approaches:

  • Special Snowflake Profile

This approach is defined by a main profile (usually ‘default’) that is used for nearly all browsing and one or two separate profiles. Many people who begin using multiple profiles are looking to solve a specific issue they face, such as creating a separate dev profile setup with add-ons and settings specific to that purpose.

  • Similar Purpose Groups

In this approach, sites that fall within a similar category are grouped into a handful of profiles. For example you may have a ‘news’ profile that automatically loads all the news sites you frequent in separate tabs on startup, or a ‘bills’ profile that holds bookmarks to all the companies you pay bills to.

  • Individual Website Profiles

Using profiles for individual websites may at first seem like overkill, but there are many advantages to doing so. For one, you can customize the profile to exactly what that particular website requires. This could include blacklisting any scripts outside of the website’s domain, restricting HTTP requests to that domain or subdomain, and finer-grain control with add-ons’ settings.

Obviously you are not tied to any one approach and in all likelihood you’ll use a rough combination of all three.

Alternative Profile Managers

Unfortunately the profile manager shipped with Firefox starts to become cumbersome as you add more and more profiles. At the time of this writing it will only sort entries in the order they are listed in the profiles.ini file (which corresponds to the order that they were created). As a result after about 10 profiles, it becomes a sifting exercise to find the particular profile you are looking for. After running into this issue myself I wrote a small Java GUI to sort profiles alphabetically the source of which is located here.

Conclusion

Although carried over from a bygone era of ‘sharing the family computer’, browser profiles can be leveraged today to greatly enhance your browsing experience. By combining multiple profiles with the appropriate add-ons you can organize and isolate websites in order to achieve increased stability, security, and privacy.

References

1. History of Mozilla Application Suite – https://en.wikipedia.org/wiki/History_of_Mozilla_Application_Suite#Release_history

2. Add-ons for FireFox – https://addons.mozilla.org

3. Profile Folder – Firefox – http://kb.mozillazine.org/Profile_folder_-_Firefox

4. Cross-site request forgery – https://en.wikipedia.org/wiki/Cross-site_request_forgery

5. The New York Times uses WebRTC to gather local IP addresses – https://news.ycombinator.com/item?id=9893561

6. Command Line Options – https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options