{"id":1255,"date":"2011-08-10T07:48:45","date_gmt":"2011-08-10T07:48:45","guid":{"rendered":"https:\/\/2011.sf.wordcamp.org\/?post_type=wcb_session&#038;p=1255"},"modified":"2012-11-21T10:25:32","modified_gmt":"2012-11-21T10:25:32","slug":"secure-iframe-communication-in-a-pre-postmessage-world","status":"publish","type":"wcb_session","link":"https:\/\/sf.wordcamp.org\/2011\/session\/secure-iframe-communication-in-a-pre-postmessage-world\/","title":{"rendered":"Developing Secure Widgets: Secure iFrame Communication in a Pre-postMessage World"},"content":{"rendered":"<p>The web is replete with &#8220;widgets&#8221; embedded into sites but hosted by external parties (witness: Google Maps, Facebook Social Plugins). Some of the best uses of these widgets require the various widgets to communicate with the embedding site or even with each other. Without a secure communication channel, though, these widgets can expose sensitive information or capabilities to malicious parties eavesdropping, spoofing, or manipulating that communication.<\/p>\n<p>window.postMessage() [1] gives modern browsers a secure and convenient communication channel. Unfortunately, a significant portion of internet users are browsing with non-modern browsers [2].<\/p>\n<p>The traditional method of communicating between iframes is via updating the target frame&#8217;s URL fragment (a.k.a. #hash). This method can be made secure, but naive implementations (of which there are legion) are open to spoofing and eavesdropping.<\/p>\n<p>This talk will describe the Needham-Schroeder-Lowe protocol, a well-known security protocol, and show the protocol&#8217;s ability to secure the traditional #hash communication channel against spoofing and eavesdropping attacks.<\/p>\n<p>The information in this talk is based on research by Adam Barth, Collin Jackson, and John C. Mitchell of Standford University&#8217;s Web Security Group [3].<\/p>\n<p>[1] <a href=\"http:\/\/www.whatwg.org\/specs\/web-apps\/current-work\/multipage\/comms.html\">http:\/\/www.whatwg.org\/specs\/web-apps\/current-work\/multipage\/comms.html<\/a><br \/>\n[2] A brief flip through Wikipedia suggests about 10% of the web browsing population uses Internet Explorer 6 or 7.<br \/>\n[3] <a href=\"http:\/\/seclab.stanford.edu\/websec\/frames\/post-message.pdf\">http:\/\/seclab.stanford.edu\/websec\/frames\/post-message.pdf<\/a><\/p>\n<p><iframe title=\"VideoPress Video Player\" aria-label='VideoPress Video Player' width='610' height='343' src='https:\/\/video.wordpress.com\/embed\/4pPPqQiu?hd=1&amp;cover=1' frameborder='0' allowfullscreen allow='clipboard-write'><\/iframe><script src='https:\/\/v0.wordpress.com\/js\/next\/videopress-iframe.js?m=1674852142'><\/script><\/p>\n<p><strong>About the Speaker:<br \/>\n<\/strong>Rising from the depths of the Quantum Information halls of Caltech, <a href=\"https:\/\/2011.sf.wordcamp.org\/speakers\/#mike-adams\">mdawaffe<\/a> has been using WordPress since 2004 and a Contributing Developer since 2006. Enjoys late night conversations about obscure code, long debugging sessions on the beach, and candlelit security reviews.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The web is replete with &#8220;widgets&#8221; embedded into sites but hosted by external parties (witness: Google Maps, Facebook Social Plugins). Some of the best uses of these widgets require the various widgets to communicate with the embedding site or even&hellip;<\/p>\n","protected":false},"author":903128,"featured_media":0,"template":"","meta":{"jetpack_post_was_ever_published":false,"_wcpt_session_time":0,"_wcpt_session_duration":3000,"_wcpt_session_type":"","_wcpt_session_slides":"","_wcpt_session_video":"","_wcpt_speaker_id":[310],"footnotes":""},"session_track":[7391],"session_category":[],"class_list":["post-1255","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-designers-and-developers"],"jetpack_shortlink":"https:\/\/wp.me\/p1vvip-kf","jetpack_sharing_enabled":true,"session_date_time":{"date":"","time":""},"session_speakers":[{"id":"310","slug":"mike-adams","name":"Mike Adams","link":"https:\/\/sf.wordcamp.org\/2011\/speaker\/mike-adams\/"}],"session_cats_rendered":null,"_links":{"self":[{"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/sessions\/1255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":10,"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/sessions\/1255\/revisions"}],"predecessor-version":[{"id":3797,"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/sessions\/1255\/revisions\/3797"}],"speakers":[{"embeddable":true,"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/speakers\/310"}],"author":[{"embeddable":true,"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wporg\/v1\/users\/jenmylo"}],"wp:attachment":[{"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/media?parent=1255"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/session_track?post=1255"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/sf.wordcamp.org\/2011\/wp-json\/wp\/v2\/session_category?post=1255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}