At Facebook, we're always looking for ways to make sharing more efficient. Today we're announcing a significant upgrade to our Photos product: a new and improved photo uploader that’s available for testing as a Facebook Prototype. Since Photos launched in 2005, the photo-uploading experience on Facebook has relied on the use of a third-party ActiveX control (and its sister Java applet). Over the years we have seen a growing number of complaints with this old uploader. In a recent poll, we discovered a significant percentage of users were unable to upload photos due to technical issues. Many more found it functional, but only just. That's when we resolved to build a modern replacement. We had the following goals for the new uploader:
- -Don't depend on Java.
- -Uploads should be asynchronous; that is, you should be able to browse around on Facebook while an upload is ongoing.
- -The uploader's UI needs to integrate well with current and future revisions of Facebook's chrome.
- -UI iteration needs to be easy (no recompiling code).
- -Updates and deployment of any binaries should be as secure, seamless and user-friendly as possible.
How it Works
Security is our top concern with this project. Part of the reason we're making this feature available early through prototypes is to solicit your feedback. We've spent long hours architecting a secure experience. Here are some of the key points:
- -The local web server that serves thumbnails and other special API endpoints only runs bound to 127.0.0.1, and its secure URIs are protected with a hashing mechanism.
- -The plug-in will refuse to run on non-Facebook domain names.
- -In the event of an XSS hole on Facebook or a network hijacker, our plug-in has strong mechanisms to prevent unauthorized access to trusted functionality. (To learn more, please see this discussion topic.)
- -All code downloads are securely signed and verified, including the entire install flow and any future updates.
- -In the unlikely event of a security hole in the plug-in itself, Facebook can easily deactivate it remotely using a "kill switch.” This is achieved every time the plug-in starts up by connecting securely to Facebook servers and comparing a minimum-version number.
If you believe you have discovered a security concern with the browser plug-in or any other part of this project, we would greatly value your input. Please send your security reports to firstname.lastname@example.org.
Our new photo uploader is currently available as a Facebook Prototype for testing purposes. To try it out, you can visit the Prototypes section of our Application Directory and activate the prototype “New Photo Uploader.” Depending on the results of these tests, we hope to roll it out to all users soon.