YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Enhanced File Upload

Enhanced File UploadDmitry Krivaltsevich

Page 2: Enhanced File Upload

AgendaWhat we will talk about:

• How to upload files to the server• Java security model. Escape from the sandbox• POST-requests. Chunked or fixed-length?• Multi threaded applet VS single threaded JS 

Page 3: Enhanced File Upload

HTML4. Form submit 

Page 4: Enhanced File Upload

HTML4. Form submitImplementation:

hidden iframe

form target

Page 5: Enhanced File Upload

HTML4. Form submit

Pros:• Native• Easy to implement

Cons:• Multiple file selection: not supported• Directory traversal: not supported• Drag & Drop from FS: not supported

Page 6: Enhanced File Upload

HTML5. JS (File API + AJAX)Google use it for Google docs

Page 7: Enhanced File Upload

HTML5. JS (File API + AJAX)

Page 8: Enhanced File Upload

HTML5. JS (File API + AJAX)

• <input type="file" multiple=""/>• File API

Pros:• Multiple file selection• One input field for all files• Pre-processing files on client side

Implementation:

Cons:• Firefox 3.6.*: several implementation issues• IE: not supported• Directory traversal: not supported

Page 9: Enhanced File Upload

Flash uploaderFacebook

Page 10: Enhanced File Upload

Flash uploaderImplementation:• Embedded flash-object

Pros:• Multiple file selection• Various browsers: flash-plugin required

Cons:• Directory traversal: not supported

Page 11: Enhanced File Upload

Java applet

ABC app

Google docs

Page 12: Enhanced File Upload

Java appletHTML template

Page 13: Enhanced File Upload

Java appletHTML template

HTTP-Only cookies

Page 14: Enhanced File Upload

Java security model

JVM Sandbox

Classloader

Local or remote code (usigned / signed)

Security policy

Valuable resources (files, etc)

Page 15: Enhanced File Upload

Escape from the sandbox

Signing

• Create keystore• Create private key• Create signed/self-signed certificate• Sign applet

Page 16: Enhanced File Upload

Escape from the sandbox

Create key and certificate

Sign JAR

Page 17: Enhanced File Upload

Escape from the sandboxSigning in ant

Page 18: Enhanced File Upload

Escape from the sandboxSigning in maven

Page 19: Enhanced File Upload

Escape from the sandbox

Page 20: Enhanced File Upload

HTTP-POST Request

1 Boundary

1

1

1

2 Fixed-Length

2

3 Field name

3

4 Filename and directory path

4

Page 21: Enhanced File Upload

Transfer-Encoding: chunkedExample

Explanation

Page 22: Enhanced File Upload

Drag & Drop

Page 23: Enhanced File Upload

Applet – JavaScript interactions

Page 24: Enhanced File Upload

Multi threaded applet VS single threaded JS

Thread #1

Thread #2

Thread #3

JVM

Thread #3Thread #1Thread #1Thread #3Thread #2

JSThread #1

JSqueue

Page 25: Enhanced File Upload

Upload appletImplementation:• Java-applet

Pros:• Multiple file and directories selection• Directory traversal• Drag & drop directly from File System

Cons:• Java & Java plugin required• Mac OS X: works only in Safari

Page 26: Enhanced File Upload

Do you have any questions?

Thanks!


Related Documents