Cross Origin Communication (CORS)

25
unlocking the secrets

description

What is the same-origin policy, and how can you get around it?

Transcript of Cross Origin Communication (CORS)

Page 1: Cross Origin Communication (CORS)

unlockingthesecrets

Page 2: Cross Origin Communication (CORS)
Page 3: Cross Origin Communication (CORS)

don'tmakecross-originrequests

Page 4: Cross Origin Communication (CORS)
Page 5: Cross Origin Communication (CORS)

ProtectionforserverProtectionforclients

Page 6: Cross Origin Communication (CORS)

Netscapedays-1999?RFC6454

64546454

Page 7: Cross Origin Communication (CORS)

Allbrowsers:javascript*java*flash

Page 8: Cross Origin Communication (CORS)

There'sIE,andthenthere'severyoneelse...

Page 9: Cross Origin Communication (CORS)
Page 10: Cross Origin Communication (CORS)

<scriptsrc="..."/><img/videosrc="..."/><ahref="..."/>formsubmissioniframeembeddedpages

Page 11: Cross Origin Communication (CORS)
Page 12: Cross Origin Communication (CORS)

Javascriptcannotbeusedtoaccessmostiframeproperties/content

e.g.:bankingappw/ads

Page 13: Cross Origin Communication (CORS)

HTML5WebMessaging(window.postMessage)

Page 14: Cross Origin Communication (CORS)

WebMessaging(traditionalendpoint)303redirect(S3endpoint)

Page 15: Cross Origin Communication (CORS)

Javascriptaccesstoproperties,andtheabilitytoexport.

e.g.modifyinganimage&cachingit

Page 16: Cross Origin Communication (CORS)

1. crossoriginattribute&Access-Control-Allow-Originheader(CORS)2. Proxying

Page 17: Cross Origin Communication (CORS)

*Browserswillsimplynotsendanycross-originrequest

e.g.mini-stackoverflow

Page 18: Cross Origin Communication (CORS)

CORSspecJSONP

Page 19: Cross Origin Communication (CORS)
Page 20: Cross Origin Communication (CORS)

Allowsforcross-originajaxrequests:serversmustopt-infullsupportinallmodernbrowsersIE9/8havepartialsupportnosupportforIE7&older

Page 21: Cross Origin Communication (CORS)

XMLHttpRequestmethods:GET,POST,HEADheaders:Accept,Accept-Language,Content-Language,Content-TypeContent-Type:text/plain,application/x-www-form-urlencoded,multipart/form-datarequestincludesanOriginheaderresponsemustincludeanAccess-Control-Allow-OriginheaderresponseoptionallyincludesAccess-Control-Expose-Headers

Page 22: Cross Origin Communication (CORS)

XDomainRequestIE8-9methods:GET,POST,HEADcannotsendANYheaders!requestincludesanOriginheaderresponsemustincludeanAccess-Control-Allow-Originheadernoaccesstoresponseheadersnoaccesstoresponsestatus

Page 23: Cross Origin Communication (CORS)

browser-preflightedXMLHttpRequestmethods:DELETE,PUTorGET/POSTw/non-simpleheadersorContent-Typebrowser "preflights" request (OPTIONS) w/ Origin, Access-Control-

Request-Method,&Access-Control-Request-HeadersheadersservermustrespondwithAccess-Control-Allow-Origin,Access-Control-

Allow-Methods,&Access-Control-Allow-Headersheadersbrowserthensendstheoriginalrequestw/Originheaderservermustrespondw/Access-Control-Allow-Originheader

Page 24: Cross Origin Communication (CORS)

Notsupported,butworkaroundsavailableforsomecases:DELETE/PUTmethod->POSTw/_methodparam

Page 25: Cross Origin Communication (CORS)

XDomainiframelibrary