Cross-site access for XMLHttpRequest()

27
Cross-site access for XMLHttpRequest() [email protected]

Transcript of Cross-site access for XMLHttpRequest()

Page 1: Cross-site access for XMLHttpRequest()

Cross-site access for XMLHttpRequest()

[email protected]

Page 2: Cross-site access for XMLHttpRequest()

XMLHttpRequest

http://www.w3.org/TR/XMLHttpRequest

Page 3: Cross-site access for XMLHttpRequest()

“The XMLHttpRequest object can be used by scripts to programmatically connect to their originating server via HTTP.”

Page 4: Cross-site access for XMLHttpRequest()

“If stored url is non same-origin the user agent should raise a SECURITY_ERR exception and terminate these steps.”

Page 5: Cross-site access for XMLHttpRequest()

GETPOSTHEADPUT

DELETEOPTIONS

Page 6: Cross-site access for XMLHttpRequest()

Enabling Read Access for Web Resources

http://www.w3.org/TR/access-control

Page 7: Cross-site access for XMLHttpRequest()

HTTP Header

XML Processing Instruction

Page 8: Cross-site access for XMLHttpRequest()

Access-Control: allow <*.example.org>exclude <*.public.example.org>

Access-Control: allow<webmaster.public.example.org>

Page 9: Cross-site access for XMLHttpRequest()

<?acces-control allow=”public.example.com”?>

Page 10: Cross-site access for XMLHttpRequest()

Processing Model

Page 11: Cross-site access for XMLHttpRequest()

GET(HEAD)

Page 12: Cross-site access for XMLHttpRequest()

Safe HTTP method, not designed for side

effects.

Page 13: Cross-site access for XMLHttpRequest()

Don't use for self-destruction, might be prefetched (and then

cached)...

Page 14: Cross-site access for XMLHttpRequest()
Page 15: Cross-site access for XMLHttpRequest()

Don't use for self-destruction, might be prefetched (and then

cached)...

Page 16: Cross-site access for XMLHttpRequest()

Goal

Authorize some data access, prevent

unauthorized data access.

Page 17: Cross-site access for XMLHttpRequest()

Goal?

Prevent HTTP GET requests.

Page 18: Cross-site access for XMLHttpRequest()

Not a goal.

Prevent HTTP GET requests.

Page 19: Cross-site access for XMLHttpRequest()

Retrieve resource

Check HTTP header

Check Processing Instruction, if XML

If access not allowed, throw exception

Page 20: Cross-site access for XMLHttpRequest()

POSTPUT

DELETE...

Page 21: Cross-site access for XMLHttpRequest()

Unsafe HTTP methods, may have

side effects.

Page 22: Cross-site access for XMLHttpRequest()

Goal

Authorize some side effects, prevent

unauthorized side effects and data access.

Page 23: Cross-site access for XMLHttpRequest()

Retrieve resource with GET(with additional HTTP header to identify target method)

Check HTTP header

Check Processing Instruction, if XML

Check HTTP Allow: header

If access not allowed, raise exception

Otherwise, HTTP request with original method

Page 24: Cross-site access for XMLHttpRequest()

(Currently under discussion, likely to

change.)

Page 25: Cross-site access for XMLHttpRequest()

“access-control” is implemented in

Firefox3.

Page 26: Cross-site access for XMLHttpRequest()

Background links

http://www.w3.org/TR/access-controlhttp://www.w3.org/TR/XMLHttpRequest

Public comments make a difference, see “Status of this Document” for details on

how to submit them.