Top Banner
Enhanced File Upload Dmitry Krivaltsevich
26

Enhanced File Upload

Apr 11, 2017

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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!