web security andauth · •security risks of web applications –injection, broken authentication,...

30
Web Security and Auth Shan-Hung Wu CS, NTHU

Upload: others

Post on 18-Aug-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Web Security and Auth

Shan-Hung WuCS, NTHU

Page 2: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Outline

• Security risks of web applications– Injection, broken authentication, XSS, CSRF, etc.– Checklist of 23 Node.js security best practices

• Auth: Authentication, authorization, and session management– HTTP Basic auth– HTTP Digest auth– Cookies for stateful sessions– Bearer tokens for stateless sessions

• Single Sign On (SSO)

2

Page 3: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Outline

• Security risks of web applications– Injection, broken authentication, XSS, CSRF, etc.– Checklist of 23 Node.js security best practices

• Auth: Authentication, authorization, and session management– HTTP Basic auth– HTTP Digest auth– Cookies for stateful sessions– Bearer tokens for stateless sessions

• Single Sign On (SSO)

3

Page 4: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Authentication vs. Authorization

• Authentication: the process to verify you are who you said

• Authorization: the process to decide if you have permission to access a resource

4

Page 5: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Session Management

• The process of securely handling multiple requests to a server from a single client (user)

5

Page 6: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Were to Store Session States?

• Server– Stateful sessions– Server processes requests based on the states

• Client– Stateless sessions– Server processes requests based on their content

6

Page 7: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Outline

• Security risks of web applications– Injection, broken authentication, XSS, CSRF, etc.– Checklist of 23 Node.js security best practices

• Auth: Authentication, authorization, and session management– HTTP Basic auth– HTTP Digest auth– Cookies for stateful sessions– Bearer tokens for stateless sessions

• Single Sign On (SSO)

7

Page 8: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Which one should I choose?

8

Page 9: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Evaluation Criteria

• Complexity• Reliance on HTTPS• Reliance on CSRF protection• Replay and integrity protection• Session management

• User cases & tips

9

Page 10: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Outline

• Security risks of web applications– Injection, broken authentication, XSS, CSRF, etc.– Checklist of 23 Node.js security best practices

• Auth: Authentication, authorization, and session management– HTTP Basic auth– HTTP Digest auth– Cookies for stateful sessions– Bearer tokens for stateless sessions

• Single Sign On (SSO)

10

Page 11: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

How It Works

• A client attaches clear text password to each request:

• Seriously?

11

// Request from clientAuthorization: Basic base64(username:password)

Page 12: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Evaluation

• Complexity: Dead simple; tons of libraries• Reliance on HTTPS: Yes• Reliance on CSRF protection: Yes• Replay and integrity protection: Relies on TLS• Session management: Poor– Logout is complicated

• Tips: always use Basic Auth with HTTPS

12

Page 13: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Outline

• Security risks of web applications– Injection, broken authentication, XSS, CSRF, etc.– Checklist of 23 Node.js security best practices

• Auth: Authentication, authorization, and session management– HTTP Basic auth– HTTP Digest auth– Cookies for stateful sessions– Bearer tokens for stateless sessions

• Single Sign On (SSO)

13

Page 14: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

HTTP Digest Auth

• Goal: not to rely on HTTPS/TLS anymore• Idea: server challenges client– No password in every request

• Not widely adopted due to complexity!

14

Page 15: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Outline

• Security risks of web applications– Injection, broken authentication, XSS, CSRF, etc.– Checklist of 23 Node.js security best practices

• Auth: Authentication, authorization, and session management– HTTP Basic auth– HTTP Digest auth– Cookies for stateful sessions– Bearer tokens for stateless sessions

• Single Sign On (SSO)

15

Page 16: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

How It Works

• Cookies are managed by browser– Sent to server in every subsequent request

16

// Login response from serverSet-Cookie: sessionId=...;

Domain=.app.com;Secure; SameSite; HttpOnly

// Subsequent requests from clientCookie: sessionId=...

Page 17: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Stateful Sessions

17

User ID

Page 18: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Evaluation

• Complexity: simple; tons of libraries• Reliance on HTTPS: Yes– Set the Secure flag

• Reliance on CSRF protection: Yes– Set the SameSite flag

• Replay and integrity protection: Relies on TLS• Session management: Good• Tips: Set the HttpOnly flag to prevent XSS

attacks from stealing it

18

Page 19: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Outline

• Security risks of web applications– Injection, broken authentication, XSS, CSRF, etc.– Checklist of 23 Node.js security best practices

• Auth: Authentication, authorization, and session management– HTTP Basic auth– HTTP Digest auth– Cookies for stateful sessions– Bearer tokens for stateless sessions

• Single Sign On (SSO)

19

Page 20: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

How It Works

• A JWT token is self-descriping and immutable– Includes user ID, expiration date, etc.

20

// Login response from server{token: e2ZahC5b // JWT token

}// Subsequent request from clientAuthorization: Bearer e2ZahC5b // added by JS

(uid, expdate, sha256(uid, expdate, secret))

Page 21: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Sateless Sessions

21

User ID

User ID

Page 22: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Evaluation

• Complexity: simple with aid from libraries• Reliance on HTTPS: Yes• Reliance on CSRF protection: No• Replay and integrity protection: Relies on TLS• Session management: Limited• Tips:– Use access and refresh tokens– Do not save tokens in local or session storage

22

Page 23: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Tips

• Secure à No token stealing• HttpOnly à No XSS• SameSite à No CSRF

23

auth.app.comapp.com

SetCookie: access=...; Domain=.app.com;Secure; SameSite; HttpOnly

SetCookie: refresh=...; Domain=auth.app.com;Secure; SameSite; HttpOnly

Page 24: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Statefull or Sateless?

24

• Stateless: more scalable, but simpler lifecycle– Good for single-page sites, APIs, or mobile apps

Page 25: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

More Authentication Schemes

• For server-to-server communications– Based on symmetric/asymmetric key cryptography

• Signature Schemes– Idea: to digitally sign every request to prevent

request tempering– Used by AWS

• TLS Client Certificates– Idea: to use TLS certificate to authenticate each

other

25

Page 26: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Outline

• Security risks of web applications– Injection, broken authentication, XSS, CSRF, etc.– Checklist of 23 Node.js security best practices

• Auth: Authentication, authorization, and session management– HTTP Basic auth– HTTP Digest auth– Cookies for stateful sessions– Bearer tokens for stateless sessions

• Single Sign On (SSO)

26

Page 27: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Signgle Sign-On (SSO)

27

Page 28: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

Open ID Connect (OIDC) vs. OAuth

• Authentication • Authorization

28

Page 29: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

OIDC Flow

29

Client app.com fb.com

Login

302

Credentials (name, password)

302 w/ ID token

Login w/ ID token

Session

Verification

Page 30: Web Security andAuth · •Security risks of web applications –Injection, broken authentication, XSS, CSRF, etc. –Checklist of 23 Node.js security best practices •Auth: Authentication,

OAuth 2 Flow

30

Client app.com fb.com auth.fb.com

Login

302

Credentials (name, password)

302 w/ ID token, grant code

api.fb.com

Login w/ ID token

Session

Grant code

Access token

Session w/ access token

Verification