{"id":47,"date":"2013-04-10T19:51:52","date_gmt":"2013-04-10T19:51:52","guid":{"rendered":"http:\/\/blog.mozilla.org\/tanvi\/?p=47"},"modified":"2022-07-14T20:59:40","modified_gmt":"2022-07-14T20:59:40","slug":"mixed-content-blocking-enabled-in-firefox-23","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/","title":{"rendered":"Mixed Content Blocking Enabled in Firefox 23!"},"content":{"rendered":"<p id=\"magicdomid16900\">For the last few months, I&#8217;ve been working on the Mixed Content Blocker for Firefox.\u00a0 I&#8217;ve been landing patches since Firefox 18 in hope of reaching this day. Mixed Active Content is now blocked by default in Firefox 23!<\/p>\n<h3 id=\"magicdomid10\"><b>What is Mixed Content?<\/b><\/h3>\n<p class=\"ace-line\">When a user visits a page served over HTTP, their connection is open for eavesdropping and man-in-the-middle (MITM) attacks. When a user visits a page served over HTTPS, their\u00a0connection with the web server is authenticated and encrypted with SSL and hence safeguarded from eavesdroppers and MITM attacks.<\/p>\n<p class=\"ace-line\">However, if an HTTPS page includes HTTP content, the HTTP portion can be read or modified by attackers, even though the main page is served over HTTPS.\u00a0 When an HTTPS page has HTTP content, we call that content &#8220;mixed&#8221;. The webpage that the user is visiting is only partially encrypted, since some of the content is retrieved unencrypted over HTTP.\u00a0 The Mixed Content Blocker blocks certain HTTP requests on HTTPS pages.<\/p>\n<p class=\"ace-line\">What do I mean by &#8220;certain HTTP requests&#8221;?\u00a0 Why wouldn&#8217;t the Mixed Content Blocker just block all HTTP requests?\u00a0 To answer this question, I will first explain how the browser security community divides mixed content into two categories; Mixed Active Content and Mixed Passive Content.<\/p>\n<h3 id=\"magicdomid18\"><b><a name=\"Mixed_Content_Classifications\">Mixed Content Classifications<\/a><\/b><\/h3>\n<address id=\"magicdomid19\"><b>Mixed Passive Content (a.k.a. Mixed Display Content).<\/b><\/address>\n<p id=\"magicdomid19568\">Mixed Passive Content is HTTP Content on an HTTPS website that cannot alter the Document Object Model (DOM) of the webpage.\u00a0 More simply stated, the HTTP content has a limited effect on the HTTPS website.\u00a0 For example, an attacker could replace an image served over HTTP with an inappropriate image or a misleading message to the user. However, the attacker would not have the ability to affect the rest of the webpage, only the section of the page where the image is loaded.<\/p>\n<p>An attacker could infer information about the user&#8217;s browsing activities by watching which images are served to the user.\u00a0 Since certain images may only appear on a specific webpage, a request for an image could tell the attacker what webpage the user is visiting. Moreover, the attacker can observe the HTTP headers sent with the image, including the user agent string and any cookies associated with the domain the image is served from.\u00a0 If the image is served from the same domain as the main webpage, then the protection HTTPS provides to the user&#8217;s account becomes useless, since an attacker can read the user&#8217;s cookies from image request headers<a href=\"#footnote1\">[1]<\/a>.<\/p>\n<p>Examples of Passive Content are images, audio, and video loads.\u00a0 Requests made by objects have also fallen into this category for now; the reasons for this are discussed further in the <a href=\"#Appendix\">Appendix<\/a>.<\/p>\n<address id=\"magicdomid17624\"><b>Mixed Active Content (a.k.a. Mixed Script Content)<\/b><\/address>\n<p id=\"magicdomid19663\">Mixed Active Content is content that has access to and can affect all or parts of the Document Object Model (DOM) of an HTTPS page. This type of mixed content can alter the behavior of an HTTPS page and potentially steal sensitive data from the user. Hence, in addition to the risks already described for Mixed Passive Content above, Mixed Active Content is also exposesd to a number of additional attack vectors.<\/p>\n<p>A MITM attacker can intercept requests for HTTP active content. The attacker can then re-write the response to include malicious JavaScript code. Malicious script can steal the user&#8217;s credentials, acquire sensitive data about the user, or attempt to install malware on the user&#8217;s system (by leveraging vulnerable plugins the user has installed, for example).<\/p>\n<p>Examples of Active Content are JavaScript, CSS, objects, xhr requests, iframes, and fonts.<\/p>\n<h3 id=\"magicdomid2037\"><a name=\"Blockerblocks\"><b>What will the Mixed Content Blocker block?<\/b><\/a><\/h3>\n<p id=\"magicdomid19949\">The Mixed Content Blocker will block Mixed Active Content requests in Firefox 23.\u00a0 This reduces the threat to the user, but does not eliminate it completely because Mixed Passive Content is still permitted.\u00a0 Users can decide to block Mixed Passive Content as well by following a couple simple steps<a href=\"#footnote2\">[2]<\/a>.<\/p>\n<p>Why are we reducing the threat instead of eliminating the threat?\u00a0 Unfortunately, the web is not ready for Firefox to block Mixed Passive Content.\u00a0 Mixed Passive Content is still common on the web.\u00a0 For example, many HTTPS webpages include HTTP images.\u00a0 Too many pages would break if we blocked Mixed Passive Content (ex: <a href=\"https:\/\/youtube.com\">https:\/\/youtube.com<\/a>).\u00a0 Hence, Firefox would alert users too often and contribute to <a href=\"http:\/\/www.w3.org\/TR\/wsc-ui\/#security-considerations-warning-fatigue\">security warning fatigue<\/a>.<\/p>\n<p>Moreover, blocking Mixed Passive Content could cause considerable user experience issues for users with low bandwidth connections.\u00a0 To avoid generating a browser security warning, websites will begin removing Mixed Passive Content from their HTTPS sites by replacing HTTP images and videos with their HTTPS equivalent versions.\u00a0 When low bandwidth users visit the HTTPS site, all image loads and video streams would be encrypted and there would be considerable lag in the page&#8217;s load time and the time it takes for videos to buffer.\u00a0 With Mixed Active Content, bandwidth considerations are not as big of an issue since Mixed Active Content loads (ex: scripts, stylesheets) are usually a few KB, compared to Mixed Passive Content loads which often contain multiple MBs of data.<\/p>\n<p>The risk involved with Mixed Content (active or passive) also depends on the type of website the user is visiting and how sensitive the data exposed to that site may be. The webpage may have public data visible to the world, or it may have private data that is only visible when authenticated. If an HTTP webpage is public and doesn&#8217;t have any sensitive data, the use of Mixed Content on that site still provides the attacker with the opportunity to redirect requests to other HTTP URLs and steal HTTP cookies from those sites.<\/p>\n<h3 id=\"magicdomid16323\"><b>I don&#8217;t have Firefox 23 yet.\u00a0 Can I enable the Mixed Content Blocker?<\/b><\/h3>\n<p id=\"magicdomid20076\">Work on the Mixed Content Blocker first landed in Firefox 18 and has been incrementally improving since.<\/p>\n<p>The Mixed Content Blocker UI does not exist in Firefox 18, 19, and 20.\u00a0 You can turn the feature on BUT if you encounter a page that breaks because a mixed content resource is blocked, the only way to fix the page and load the insecure content is to turn the feature off.\u00a0 This makes the feature difficult to use in FF 18, 19 and 20.<\/p>\n<p>Firefox\u00a021 and 22 (currently Firefox Beta and Aurora, respectively) shipped with the Mixed Content Blocking UI.\u00a0 You can turn on the feature and try it out<a href=\"#footnote3\">[3]<\/a>!\u00a0 (Note that there is a case that is incorrectly blocked in Firefox 21 that was fixed in Firefox 22 with <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=841850\">Bug 841850<\/a>).<\/p>\n<h3 id=\"magicdomid6051\"><b><\/b><b>Mixed Content Blocker UI<\/b><\/h3>\n<p id=\"magicdomid45\">Designing UI for security is always tricky.\u00a0 How do you inform the user about a potential security threat without annoying them and interrupting their task?<\/p>\n<p id=\"magicdomid17774\">Larissa Co (<a href=\"https:\/\/twitter.com\/lyco1\">@lyco1<\/a>) from Mozilla&#8217;s User Experience team aimed to solve this problem.\u00a0 She created a Security UX Framework with a set of core principles that drove the UX design for the Mixed Content Blocker.\u00a0 If you&#8217;re interested in learning more about this process, I encourage you to check out the <a href=\"https:\/\/people.mozilla.com\/%7Elco\/ProjectSPF\/Mixed_Content\/Mixed_Content_Spec\/Mixed%20Content%20Spec%20v4.pdf\">Mixed Content Design Specification<\/a> and Larissa&#8217;s presentation on <a href=\"https:\/\/air.mozilla.org\/meaningful-security\/\">Designing Meaningful and Usable Security Experiences<\/a>.<\/p>\n<p>So what does the UI look like?\u00a0 If a user visits an HTTPS page with Mixed Active Content, they will see the following in the location bar:<\/p>\n<div>\n<p style=\"text-align: center;\"><a href=\"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" alt=\"Shield Icon Doorhanger shown on HTTPS page with Mixed Active Content\" src=\"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg\" width=\"643\" height=\"86\" \/><\/a><\/p>\n<\/div>\n<p id=\"magicdomid56\">Clicking on the shield, they will see options to Learn More, Keep Blocking, or Disable Protection on This Page:<\/p>\n<div><a href=\"https:\/\/people.mozilla.com\/~tvyas\/FigureB.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" alt=\"Shield Doorhanger Drop Down UI\" src=\"https:\/\/people.mozilla.com\/~tvyas\/FigureB.jpg\" width=\"637\" height=\"309\" \/><\/a><\/div>\n<p id=\"magicdomid59\">If a user decides to &#8220;Keep Blocking&#8221;, the notification in the location bar will disappear:<\/p>\n<div id=\"magicdomid61\"><a href=\"https:\/\/people.mozilla.com\/~tvyas\/FigureC.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" alt=\"If the user decides to Keep Blocking, the shield will disappear.\" src=\"https:\/\/people.mozilla.com\/~tvyas\/FigureC.jpg\" width=\"644\" height=\"84\" \/><\/a><\/div>\n<p id=\"magicdomid62\">On the other hand, if a user decides to &#8220;Disable Protection on This Page&#8221;, all mixed content will load on the HTTPS page and the Lock icon will be replaced with a Yellow Warning Triangle:<\/p>\n<div id=\"magicdomid63\">\n<p style=\"text-align: center;\"><a href=\"https:\/\/people.mozilla.com\/~tvyas\/FigureD.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\" aligncenter\" alt=\"Yellow Warning Triangle appears after the user Disables Protection\" src=\"https:\/\/people.mozilla.com\/~tvyas\/FigureD.jpg\" width=\"644\" height=\"87\" \/><\/a><\/p>\n<\/div>\n<div id=\"magicdomid18361\">\n<p>If the user is unsure what to do, they can opt to learn more by clicking on the &#8220;Learn More&#8221; link.  The user can also select &#8220;Not Now&#8221; or the &#8220;x&#8221; at the top of the drop down box to defer their decision until later.<\/p>\n<\/div>\n<div id=\"magicdomid66\"><\/div>\n<p>If a user visits an HTTPS page with Mixed Passive Content, Firefox will not block the passive content by default (see <a href=\"#Blockerblocks\">What will the Mixed Content Blocker block?<\/a>).\u00a0 But, since Mixed Passive Content does exist on the page, it is not fully encrypted and the user will not see the lock icon in the location bar:<\/p>\n<h3><a href=\"https:\/\/people.mozilla.com\/~tvyas\/FigureE.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" alt=\"A page with Mixed Passive Content will show the Globe icon instead of the Lock icon.\" src=\"https:\/\/people.mozilla.com\/~tvyas\/FigureE.jpg\" width=\"636\" height=\"85\" \/><\/a><strong><a name=\"Mixed_Content_Frames\">Mixed Content Frames<\/a><\/strong><\/h3>\n<p id=\"magicdomid20166\">Note that frames are classified as Mixed Active Content.\u00a0 This has been a source of debate and browser vendors haven&#8217;t quite settled on whether mixed content frames should be considered active or passive.\u00a0 Firefox and Internet Explorer consider frames Mixed Active Content, while Chrome considers frames Mixed Passive Content.<\/p>\n<p>When trying to determine whether a load is passive or active, I ask myself\u00a0&#8220;can the content affect the DOM of the page?&#8221;.\u00a0 With frames, this gets a\u00a0little tricky.\u00a0 Technically, an HTTP frame cannot affect the DOM of its HTTPS page and hence could fall into the Mixed Passive Content category.<\/p>\n<p>When we dig further, however, we find reasons to push frames into the Mixed Active Content category.\u00a0 A frame has the ability to navigate the top level page and redirect a user to a malicious site.\u00a0 Frames can also trick users into disclosing sensitive information to attackers.\u00a0 For example, assume a user is on an HTTPS page that embeds an HTTP frame.\u00a0 An attacker can MITM the frame and replace its content with a form.\u00a0 The form may ask the user to login or create an account. Most users are oblivious to the concept of framing pages and have no idea that it is the HTTP frame that contains the form and not the HTTPS website. Assuming they are on the HTTPS encrypted page, the user enters their personal information.\u00a0 This information is then sent to the attacker without the user&#8217;s knowledge.<\/p>\n<h3 id=\"magicdomid16329\"><b>Remaining Edge Case<\/b><\/h3>\n<p id=\"magicdomid17889\">Many edge cases were found while developing the Mixed Content Blocker.\u00a0 Some of these edge cases have been resolved, some are pending development, and some are open questions that require further discussion.<\/p>\n<p>We did not want to wait until all possible issues were resolved before turning Mixed Active Content blocking on by default for our users.\u00a0 But at the same time, if we turned the feature on with too many false positives, we would be unnecessarily alerting users and contributing to security warning fatigue.\u00a0 (False positives are cases where the Mixed Content Blocker mistakenly blocks content that should have been permitted.)\u00a0 Hence, I worked to eliminate all false positive issues that I was aware of before turning on the Mixed Content Blocker.<\/p>\n<p>On the other hand, there are still a number of false negatives that remain open. This means that there are certain cases where the Mixed Content Blocker does not block content that should have been blocked.\u00a0 We still decided to turn the feature on because we believe we should protect our users as soon as possible, even if our solution is not 100% perfect yet.\u00a0 The false negatives are valid issues and affect the safety of our users.\u00a0 Engineering solutions for these edge cases is important (and is next on my list), but should not prevent us from protecting users from mixed content we can identify and can block for users today.<\/p>\n<p>For developers trying to secure their websites by removing mixed content, these false negative edge cases could prove problematic and cause extra work.\u00a0 The last thing a developer wants to do is attempt to remove mixed content on their site for Firefox 23, and then have to do this again in Firefox 24 because of an edge case that was fixed and that the developer wasn&#8217;t aware of the first time around.\u00a0 In an attempt to help with this problem, I have an added an <a href=\"#Appendix\">Appendix<\/a> to this blog post that will describe all the open edge cases and open questions with reference links where developers can learn more about the progress in resolving these known issues.<\/p>\n<h3 id=\"magicdomid16700\"><b>Thank You<\/b><\/h3>\n<p id=\"magicdomid16521\">Thanks to all the Mozillians that have helped me with this feature.\u00a0 Special shouts out to&#8230;<\/p>\n<address id=\"magicdomid16637\">Olli Pettay (smaug)<\/address>\n<address id=\"magicdomid16677\">Brandon Sterne (<a href=\"https:\/\/twitter.com\/bsterne\">@bsterne<\/a>)<\/address>\n<address id=\"magicdomid16625\">Larissa Co (<a href=\"https:\/\/twitter.com\/lyco1\">@lyco1<\/a>)<\/address>\n<address id=\"magicdomid16656\">Ian Melven (<a href=\"https:\/\/twitter.com\/imelven\">@imelven<\/a>)<\/address>\n<address id=\"magicdomid16690\">Sid Stamm<\/address>\n<address id=\"magicdomid16692\">Brian Smith<\/address>\n<address id=\"magicdomid16621\">Justin Dolske (<a href=\"https:\/\/twitter.com\/dolske\">@dolske<\/a>)<\/address>\n<address id=\"magicdomid16669\">Gavin Sharp (<a href=\"https:\/\/twitter.com\/gavinsharp\">@gavinsharp<\/a>)<\/address>\n<address id=\"magicdomid16600\">Matthew Noorenberghe<\/address>\n<address id=\"magicdomid16701\">\u00a0<\/address>\n<p id=\"magicdomid16756\">Couldn&#8217;t have done it without you \ud83d\ude42<\/p>\n<div id=\"magicdomid16757\"><\/div>\n<div id=\"magicdomid16346\"><\/div>\n<h2 id=\"magicdomid14500\"><b>Footnotes<\/b><\/h2>\n<p id=\"magicdomid15884\"><a name=\"footnote1\">[1]<\/a> Unless the authentication cookies are flagged with the secure bit, preventing the browser from sending the authentication cookies for non-HTTPS requests.<\/p>\n<p id=\"magicdomid22475\"><a name=\"footnote2\">[2]<\/a> To block Mixed Passive Content, open a window or tab in Firefox and enter about:config.\u00a0 You will get to a page that asks you to promise to be careful.\u00a0 Promise you will be, and then change the value of security.mixed_content.block_display_content to true by double clicking it.<\/p>\n<p><a name=\"footnote3\">[3]<\/a>\u00a0 In Firefox 23+, Mixed Active Content is blocked by default.\u00a0 If you are using a Firefox version between 18 and 22, you can block Mixed Active Content by opening a window or tab in Firefox and enter about:config.\u00a0 You will get to a page that asks you to\u00a0promise to be careful.\u00a0 Promise you will be, and then change the value of security.mixed_content.block_active_content to true by double clicking it.<\/p>\n<h3 id=\"magicdomid14402\"><a name=\"Appendix\"><b>Appendix &#8211; Edge Cases Described in Detail<\/b><\/a><\/h3>\n<p>Note that this section is highly technical and has a lot of gory details, so feel free to skip over it unless you are interested, want a sneak peak at forthcoming Mixed Content Blocker changes that may affect your site, and\/or are a browser security junkie like me \ud83d\ude42<\/p>\n<ol>\n<ol>\n<li><b>Redirects<br \/>\n<\/b>If an HTTPS content load responds with a 302 to an HTTP destination, the Mixed Content Blocker in Firefox will not detect or block the mixed content.\u00a0 This is because of the way that Gecko&#8217;s Content Policies work (or don&#8217;t work) with redirects.\u00a0 The work to fix this edge case can be found in <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=418354\">Bug 418354<\/a> and <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=456957\">Bug 456957<\/a>.<\/li>\n<li><strong>Session Restore &amp; document.write<\/strong><br \/>\nAssume an HTTPS page loads an HTTP script that invokes a document.write that replaces the current page&#8217;s content.\u00a0 If the browser is shut down and later the session is restored, the user will see the content from the document.write that replaced the original webpage.\u00a0 This would be okay, except that instead of showing the yellow warning triangle, Firefox 23 shows a lock.\u00a0 This is inaccurate, because the page&#8217;s new content was created\u00a0by an HTTP script and hence cannot be considered fully encrypted.\u00a0 The work to fix this issue can be found in <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=815345\">Bug 815345.<\/a><\/li>\n<li><strong>Object Subrequests<\/strong><br \/>\nAssume that an HTTPS page loads an HTTPS object in a plugin.\u00a0 That object may then request further resources through the plugin.\u00a0 The requests made by the plugin are considered the object&#8217;s subrequests.\u00a0 Since the requests are made by a plugin and not by the browser, it is very difficult for the browser to determine whether the HTTP subrequests should be considered Mixed Active or Mixed Passive.\u00a0 Without help from plugin vendors, browsers cannot accurately determine this classification.\u00a0 To prevent false\u00a0positives and security warning fatigue, Firefox (and Chrome) have classified HTTP object subrequests as Mixed Passive Content.\u00a0 This\u00a0means that we do have false negatives, where the content is actually active and should be blocked, but isn&#8217;t.<\/p>\n<p>The solution to these false negatives is still under discussion.\u00a0 Take a look at <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=836352\">Bug 836352<\/a> and chime in if you have some suggestions!<\/li>\n<li><b>Relying on HSTS to prevent Mixed Content<\/b><br \/>\nWebsites can specify an <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_Strict_Transport_Security\">HSTS header<\/a> that tells browsers to only connect to them over a secure connection.\u00a0 Assume <a href=\"https:\/\/example.com\">https:\/\/example.com<\/a>\u00a0sets this header (and for simplicity sake, assume example.com is not on the <a href=\"https:\/\/blog.mozilla.org\/security\/2012\/11\/01\/preloading-hsts\/\">HSTS preload list<\/a>).\u00a0 A developer, relying on HSTS, includes HTTP content from example.com on <a href=\"https:\/\/foo.com\">https:\/\/foo.com<\/a>.<\/p>\n<p>Firefox will convert the <a href=\"http:\/\/example.com\">http:\/\/example.com<\/a> link to an <a href=\"https:\/\/example.com\">https:\/\/example.com<\/a> link before making the network request.\u00a0 Hence, technically, the user&#8217;s security is never affected.<\/p>\n<p>Currently, the Mixed Content Blocker will detect the <a href=\"http:\/\/example.com\">http:\/\/example.com<\/a> link before it is converted to HTTPS by HSTS and classify the content as mixed content.\u00a0 I believe this is fine.\u00a0 Relying on HSTS to protect websites from mixed content loads is bad practice, for the following reasons.<\/p>\n<ul>\n<li>If this is the first time the user has loaded content from example.com, the content will be loaded over HTTP since the browser has not yet received and HSTS header from example.com<\/li>\n<li>For browsers that do not have HSTS implemented (ex: Internet Explorer), <a href=\"https:\/\/foo.com\">https:\/\/foo.com<\/a> will have mixed content, since the request for content from <a href=\"http:\/\/example.com\">http:\/\/example.com<\/a> is never converted to an HTTPS request.<\/li>\n<\/ul>\n<p>Perhaps you disagree?\u00a0\u00a0Express your thoughts in <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=838395\">Bug 838395<\/a><\/li>\n<li><b>Mixed Content in Framed Pages<\/b><br \/>\nAssume <a href=\"https:\/\/unimportant-site.com\">https:\/\/unimportant-site.com<\/a> includes an iframe to <a href=\"https:\/\/bank.com\">https:\/\/bank.com<\/a>.\u00a0 <a href=\"https:\/\/bank.com\">https:\/\/bank.com<\/a> contains Mixed Active Content that Firefox blocks.\u00a0 The user has a\u00a0choice to &#8220;Disable Protection on This Page&#8221; and load the Mixed Active\u00a0 Content on <a href=\"https:\/\/bank.com\">https:\/\/bank.com<\/a>.\u00a0 As we mentioned earlier, most users don&#8217;t know what frames are.\u00a0 The user see&#8217;s that they are on <a href=\"https:\/\/unimportant-site.com\">https:\/\/unimportant-site.com<\/a> and can decide to load the mixed content on <a href=\"https:\/\/unimportant-site.com\">https:\/\/unimportant-site.com<\/a> by clicking &#8220;Disable Protection on This Page&#8221;.\u00a0 To the user, &#8220;This Page&#8221; is <a href=\"https:\/\/unimportant-site.com\">https:\/\/unimportant-site.com<\/a>, but in actuality, the result is that protection is disabled on <a href=\"https:\/\/bank.com\">https:\/\/bank.com<\/a>.<\/p>\n<p><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=826599\">Bug 826599<\/a> discusses whether users should even have an option to disable protection on HTTPS frames.\u00a0 The bug is to remove the UI to Disable Protection if the mixed content is coming from an HTTPS frame with a different domain than the top level domain.\u00a0 What do you think about this?<\/li>\n<\/ol>\n<\/ol>\n<p id=\"magicdomid17940\">In addition to the items listed above, there are also many other issues remaining to improve the Mixed Content Blocker.\u00a0 You can see <a href=\"https:\/\/wiki.mozilla.org\/Security\/Features\/Mixed_Content_Blocker#UI_tweaks\">here<\/a> for a list of items and corresponding bug numbers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For the last few months, I&#8217;ve been working on the Mixed Content Blocker for Firefox.\u00a0 I&#8217;ve been landing patches since Firefox 18 in hope of reaching this day. Mixed Active Content is now blocked by default in Firefox 23! What is Mixed Content? When a user visits a page served over HTTP, their connection is&hellip; <a class=\"more-link\" href=\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/\" title=\"Read the rest of &#8220;Mixed Content Blocking Enabled in Firefox 23!&#8221;\">Read more<\/a><\/p>\n","protected":false},"author":412,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mixed Content Blocking Enabled in Firefox 23! - Tanvi Vyas<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mixed Content Blocking Enabled in Firefox 23! - Tanvi Vyas\" \/>\n<meta property=\"og:description\" content=\"For the last few months, I&#8217;ve been working on the Mixed Content Blocker for Firefox.\u00a0 I&#8217;ve been landing patches since Firefox 18 in hope of reaching this day. Mixed Active Content is now blocked by default in Firefox 23! What is Mixed Content? When a user visits a page served over HTTP, their connection is&hellip; Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/\" \/>\n<meta property=\"og:site_name\" content=\"Tanvi Vyas\" \/>\n<meta property=\"article:published_time\" content=\"2013-04-10T19:51:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-14T20:59:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg\" \/>\n<meta name=\"author\" content=\"Tanvi Vyas\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TanviHacks\" \/>\n<meta name=\"twitter:site\" content=\"@TanviHacks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tanvi Vyas\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/\",\"url\":\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/\",\"name\":\"Mixed Content Blocking Enabled in Firefox 23! - Tanvi Vyas\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg\",\"datePublished\":\"2013-04-10T19:51:52+00:00\",\"dateModified\":\"2022-07-14T20:59:40+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/#\/schema\/person\/94b89a1b3d28fe214eb7543734810143\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#primaryimage\",\"url\":\"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg\",\"contentUrl\":\"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/tanvi\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mixed Content Blocking Enabled in Firefox 23!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/tanvi\/\",\"name\":\"Tanvi Vyas\",\"description\":\"Security and Privacy Engineer  - @TanviHacks\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/tanvi\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/#\/schema\/person\/94b89a1b3d28fe214eb7543734810143\",\"name\":\"Tanvi Vyas\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/tanvi\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9f4d447f27c116342ba41a747802372d?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9f4d447f27c116342ba41a747802372d?s=96&d=blank&r=g\",\"caption\":\"Tanvi Vyas\"},\"description\":\"Security\/Privacy Engineer and Tech Lead at Mozilla - @TanviHacks\",\"sameAs\":[\"https:\/\/blog.mozilla.org\/tanvi\/\",\"https:\/\/x.com\/@TanviHacks\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mixed Content Blocking Enabled in Firefox 23! - Tanvi Vyas","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/","og_locale":"en_US","og_type":"article","og_title":"Mixed Content Blocking Enabled in Firefox 23! - Tanvi Vyas","og_description":"For the last few months, I&#8217;ve been working on the Mixed Content Blocker for Firefox.\u00a0 I&#8217;ve been landing patches since Firefox 18 in hope of reaching this day. Mixed Active Content is now blocked by default in Firefox 23! What is Mixed Content? When a user visits a page served over HTTP, their connection is&hellip; Read more","og_url":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/","og_site_name":"Tanvi Vyas","article_published_time":"2013-04-10T19:51:52+00:00","article_modified_time":"2022-07-14T20:59:40+00:00","og_image":[{"url":"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg"}],"author":"Tanvi Vyas","twitter_card":"summary_large_image","twitter_creator":"@TanviHacks","twitter_site":"@TanviHacks","twitter_misc":{"Written by":"Tanvi Vyas","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/","url":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/","name":"Mixed Content Blocking Enabled in Firefox 23! - Tanvi Vyas","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/tanvi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#primaryimage"},"thumbnailUrl":"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg","datePublished":"2013-04-10T19:51:52+00:00","dateModified":"2022-07-14T20:59:40+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/tanvi\/#\/schema\/person\/94b89a1b3d28fe214eb7543734810143"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#primaryimage","url":"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg","contentUrl":"https:\/\/people.mozilla.com\/~tvyas\/FigureA.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/tanvi\/2013\/04\/10\/mixed-content-blocking-enabled-in-firefox-23\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/tanvi\/"},{"@type":"ListItem","position":2,"name":"Mixed Content Blocking Enabled in Firefox 23!"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/tanvi\/#website","url":"https:\/\/blog.mozilla.org\/tanvi\/","name":"Tanvi Vyas","description":"Security and Privacy Engineer  - @TanviHacks","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/tanvi\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/tanvi\/#\/schema\/person\/94b89a1b3d28fe214eb7543734810143","name":"Tanvi Vyas","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/tanvi\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9f4d447f27c116342ba41a747802372d?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9f4d447f27c116342ba41a747802372d?s=96&d=blank&r=g","caption":"Tanvi Vyas"},"description":"Security\/Privacy Engineer and Tech Lead at Mozilla - @TanviHacks","sameAs":["https:\/\/blog.mozilla.org\/tanvi\/","https:\/\/x.com\/@TanviHacks"]}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/posts\/47"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/users\/412"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/comments?post=47"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/posts\/47\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/media?parent=47"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/categories?post=47"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/tanvi\/wp-json\/wp\/v2\/tags?post=47"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}