Đinh H u Công ữ

1

Ban An toàn thông tin

Hà N i, 01/2012 ộ

N i dung

Ph n I: An toàn thông tin (ATTT) cho ng d ng

ẫ ậ

ầ web ầ ầ ầ

Ph n II: H ng d n l p trình an toàn Ph n III: Th c hành Ph n IV: Th o lu n ậ

ướ ự ả

Ban An toàn thông tin Ban An toàn thông tin

2

Ph n I: ATTT cho ng d ng web

1

T ng quan

2

Ki m soát d li u đ u vào

ữ ệ

3

Ki m soát d li u đ u ra

ữ ệ

4

Ki m soát truy v n database

5

Ki m soát thao tác v i file

Ban An toàn thông tin Ban An toàn thông tin

3

1. T ng quan

ả ứ

ệ ố

ả ạ

ị ấ

ATTT cho ng d ng Web: Đ m b o ng d ng web không b t n công gây h i cho h th ng và ng

ườ

Mô hình ng d ng web, các nguy c và cách

ơ

i dùng ứ

phòng ch ngố

Ban An toàn thông tin Ban An toàn thông tin

4

1. T ng quan

Ki m soát truy v n ấ Database

- SQL Injection - Mã hóa d ữ li uệ

Ki m soát ể d li u ữ ệ đ u vào ầ

- SQL Injection - XSS - CSRF - L i phân quy n ề ỗ - Path traversal

Query

Databas e

Request

Web Browser

Web App

Response

File

I/O

- XSS

Ki m soát ể d li u ữ ệ đ u raầ

Ki m soát Thao tác v i ớ file

- Path Traversal - Upload, download

Th c hi n phòng ch ng Mô hình ng d ng web Các nguy c b t n công

ơ ị ấ ụ

Ban An toàn thông tin Ban An toàn thông tin

5

2. Ki m soát d li u đ u vào

ữ ệ

Khái ni mệ

ườ ượ

ữ ệ ọ i dùng nh p vào đ c truy n lên server  D li u do ng ậ  M i cu c t n công đ u ph i thông qua d li u đ u vào ả ề ữ ệ ộ ấ ầ

ề Nguy c : SQL Injection, XSS (Cross Site

ơ

ậ ữ ệ

ể ẩ

Scripting) , CSRF (Cross Site Request Forgery), Path Traversal, l i phân quy n Th c hi n ệ ự ỉ ấ ể ế ợ ể

 Ch ch p nh n d li u h p l ợ ệ t  Ki m tra phía server là c n thi ế ầ  K t h p các tiêu chu n ki m tra  Ki m tra đ dài xâu là tiêu chu n nhanh và hi u qu ẩ

Ban An toàn thông tin Ban An toàn thông tin

6

ệ ả ộ

3. Ki m soát d li u đ u ra

ữ ệ

Khái ni mệ

ữ ệ

ấ Nguy c :L i trong quá trình output các d li u i Cross-Site Scripting (XSS)

 Là n i dung server tr v HTML cho web browser ả ề  Ch a input ng i dùng nh p vào ườ ứ  Ch a k t qu truy v n database ứ ế ả ơ ỗ sang HTML gây ra l Th c hi n: L c các ký t

t khi output

đ c bi

ự ặ

Ban An toàn thông tin Ban An toàn thông tin

7

4. Ki m soát truy v n database

Khái ni mệ

 Truy xu t d li u c a ng d ng web trong database  Là thao tác ch y u trong ng d ng web  Ngôn ng truy v n: SQL, HQL

ứ ụ

ấ ữ ệ ủ ứ ủ ế ấ ữ

Nguy cơ

 SQL Injection: L i trong quá trình t o câu query ỗ  Mã hóa không an toàn: L i trong cách t

ch c d li u ỗ ổ ứ ữ ệ

Th c hi n ệ ự

 Gán tham s cho các câu truy v n database  Mã hóa an toàn

Ban An toàn thông tin Ban An toàn thông tin

8

ấ ố

5.Ki m soát thao tác v i file

Khái ni mệ

 Các thao tác đ c ghi file trên server

Nguy c : L i liên quan đ n vi c x lý đ

ng

ơ ỗ

ệ ử

ế

ườ

ư ụ ng d n ẫ ườ ự

 Ch n các kí t  Ch cho phép upload các file có ph n m r ng h p l

không h p l ợ ệ ự

d n file ẫ  Ph n m r ng c a file ầ ở ộ  Ch a xâu ..\, ../ : Chuy n đ n th m c cha ể ứ ế  Ký t NULL: K t thúc xâu đ ế Th c hi n ệ ự ặ ỉ

Ban An toàn thông tin Ban An toàn thông tin

9

trong tên file ầ ở ộ ợ ệ

Ph n II: H ng d n l p trình an toàn

ẫ ậ

ướ

1

T ng quan

2

Phòng ch ng SQL Injection

3

Phòng ch ng XSS ố

4

Phòng ch ng CSRF ố

5

Phòng ch ng l

i thao tác file

6

Phòng ch ng l

i mã hóa d li u

ữ ệ

7

Phòng ch ng l

i phân quy n

1 8

Phòng ch ng l

i phân quy n

Ban An toàn thông tin Ban An toàn thông tin

10

1. T ng quan

i c th khi phát

ỗ ụ ể

i mã hóa d li u, l

Tài li u do t p đoàn ban hành ậ M c tiêu: Phòng ch ng các l ụ ể ứ ụ i thao tác v i file, l

ữ ệ ỗ

ng áp d ng: Nhân viên phát tri n

tri n ng d ng web: SQL Injection, XSS, CSRF, i phân l ỗ quy nề Đ i t ố ượ N i dung ộ  Khái ni mệ  Yêu c uầ  H ng d n ướ  Ví d minh h a ọ ụ

Ban An toàn thông tin Ban An toàn thông tin

11

2. Phòng ch ng SQL Injection

Khái ni m SQL Injection ệ Yêu c u: ầ

i dùng ph i đ c truy n d ề ướ ạ

i d ng c s d ng cách c ng xâu trong các truy ng ừ ườ ượ ử ụ

 D li u input t ữ ệ tham s không đ ố v n t i c s d li u đ tránh l ấ ớ ơ ở ữ ệ

Ban An toàn thông tin Ban An toàn thông tin

12

h ng SQL Injection ể ả ượ ộ ỗ ổ

2. Phòng ch ng SQL Injection

 Truy v n SQL ph i dùng PrepareStatement, t

Th c hi n ệ ự ấ

ấ ả

c add b ng hàm( setParam..), không đ t c tham s ố c x ượ ử

 Truy v n HQL t ấ

ả ph i đ ằ ả ượ d ng cách c ng xâu trong truy v n. ụ ấ ả ấ ả ượ ằ

ố c x d ng cách c ng xâu t c tham s ph i đ ượ ử ụ c add b ng ộ

hàm( setParam..), không đ trong truy v nấ

Ví dụ

Ban An toàn thông tin Ban An toàn thông tin

13

2. Phòng ch ng SQL Injection

Ban An toàn thông tin Ban An toàn thông tin

14

select * from users where user_name=‘test’ or ‘1’=‘1’ and password=‘fsaf’

2. Phòng ch ng SQL Injection

Ban An toàn thông tin Ban An toàn thông tin

15

2. Phòng ch ng SQL Injection

Đo n code b l

i ị ỗ

Ban An toàn thông tin Ban An toàn thông tin

16

2. Phòng ch ng SQL Injection

Đo n code an toàn

Ban An toàn thông tin Ban An toàn thông tin

17

3. Phòng ch ngố XSS

Khái ni m XSS (Cross Site Scripting) ệ Yêu c u: ầ

c t ự

t c d li u đ u vào nh n đ ầ ậ ượ ừ i d ng HTML các ký ướ ạ ủ: <,>,&,’,”,/ nguy hi m trong c s d li u tr c khi ơ ở ữ ệ ướ

 Th c hi n x lý v i t ớ ấ ả ữ ệ ệ ử trình duy t, lo i b ho c mã hóa d ạ ỏ ặ ệ t do client g i lên máy ch đ c bi t ử ệ ự ặ  X lý các ký t ể ử : <,>,&,’,”,/ g i t ườ ử ớ

Ban An toàn thông tin Ban An toàn thông tin

18

ự i dùng i ng

3. Phòng ch ngố XSS

Th c hi n ệ ự

 Khi in các tham s ra HTML trong trang JSP s d ng các

ử ụ ố

hàm an toàn

Hàm an toàn

Hàm b l

i ị ỗ

Grid: escapeHTMLInData="false"

escapeHTMLInData="true"

${fn:escapeXml(var)}

${var}

<%=StringEscapeUtils.escapeHtml(var)%>

<%=var%>

out.print(StringEscapeUtils.escapeHtml(var))

out.print(var)

Ví dụ

Ban An toàn thông tin Ban An toàn thông tin

19

3. Phòng ch ngố XSS

Đo n code b l

i ị ỗ

Ban An toàn thông tin Ban An toàn thông tin

20

3. Phòng ch ngố XSS

Đo n code an toàn

Ban An toàn thông tin Ban An toàn thông tin

21

4. Phòng ch ngố CSRF

Khái ni m CSRF (Cross Site Request Forgery) ệ Yêu c u:ầ

 Trong các t

ng tác c a ng ủ ươ

ườ ế ử ụ

c t o ra m i đ u phiên truy c p c a ng ậ ủ

ượ ạ ộ ứ ể

i dùng) nh ư ng th c GET ho c POST và ki m ặ ậ ủ ể

Ban An toàn thông tin Ban An toàn thông tin

22

i dùng v i c s d li u ớ ơ ở ữ ệ thông qua các form, liên k t, s d ng thêm bi n token ế (đ ườ ỗ ầ m t tham s trong ph ươ ố i server đ xác nh n hành vi c a tra giá tr token này t ạ ng ị i dùng ườ

4. Phòng ch ngố CSRF

Th c hi n ệ ự ố ớ

 Đ i v i các yêu c u quan tr ng, s d ng thêm bi n token. ọ

ử ụ ế

c ừ ầ ử thì yêu c u s không đ ầ ẽ ượ ợ ệ

ầ Trên server s ki m tra token trong yêu c u g i lên t ẽ ể client, n u token không h p l ế th c hi n ệ

Ban An toàn thông tin Ban An toàn thông tin

23

ự Ví dụ

4. Phòng ch ngố CSRF

http://localhost:8084/TestStruts/HelloStruts2World.action?userName=123

Đo n code b l

i ị ỗ

Ban An toàn thông tin Ban An toàn thông tin

24

4. Phòng ch ngố CSRF

http://localhost:8084/TestStruts/HelloStruts2World.action? userName=123& struts.token.name=struts.token& struts.token=B154AN2E6MWVG74SZLZCGXN0RHF2546F

Đo n code an toàn

Ban An toàn thông tin Ban An toàn thông tin

25

5. Phòng ch ng l

i thao tác v i file

Khái ni m thao tác file trong ng d ng web ệ Yêu c u: ầ

ớ ự

\, /, null khi x lý v i tên file. ử ị ạ

 Ch n các kí t ặ i h n ch cho phép các đ nh d ng file theo yêu c u c a  Gi ỉ ớ ạ ầ ủ c phép upload lên máy ch . Ki m soát file ng d ng đ ể ứ ượ ụ i m t th upload phía server. L u tr các file upload t ư ộ ạ ữ ư m c riêng n m ngoài th m c web ho c không cho phép ư ụ ụ truy c p, th c thi trên các th m c đó

Ban An toàn thông tin Ban An toàn thông tin

26

ư ụ ằ ự ậ

5. Phòng ch ng l

i thao tác v i file

 Ki m tra phía server.  Ki m soát ph n m r ng c a file, ch cho phép th c hi n ủ

ự ệ ầ

ng d n file ph i

Th c hi n ệ ự ể ể ỉ v i các file có đ nh d ng theo yêu c u. ầ ớ  Các hàm liên quan đ c ghi file, bi n đ ế ườ

ẫ ả

c l c /, \ và kí t ở ộ ạ ọ null ự ượ ọ

Ban An toàn thông tin Ban An toàn thông tin

27

đ Ví dụ

5. Phòng ch ng l

i thao tác v i file

Đo n code b l

i ị ỗ

Ban An toàn thông tin Ban An toàn thông tin

28

5. Phòng ch ng l

i thao tác v i file

Đo n code an toàn

Ban An toàn thông tin Ban An toàn thông tin

29

6. Phòng ch ng l

i mã hóa d li u

ữ ệ

Yêu c u: ầ

 Nh ng d li u nh y c m trong c s d li u c n đ

c ơ ở ữ ệ ầ ượ ạ ả ữ ệ

ữ mã hóa Th c hi n ệ ự

ự ệ ơ ở ữ ệ

ả salt khi th c ự

 Mã hóa các d li u nh y c m trong c s d li u. ạ ả ố ớ ác hàm mã hóa 1 chi u ề ph i có thêm  Đ i v i c ữ ệ ệ

salt là d li u thêm vào plain text tr c khi ướ

 Nguyên lý: hash = encrypt(salt + pass)  Ví d : encryptPass = SHA1(“ttpmdn” + pass)

hi n mã hóa ( mã hóa)

Ví dụ

Ban An toàn thông tin Ban An toàn thông tin

30

6. Phòng ch ng l

i mã hóa d li u

ữ ệ

salt

Mã hóa 1 chi u không dùng ề

Ban An toàn thông tin Ban An toàn thông tin

31

QL0AFWMIX8NRZTKeof9cXsvbvu8 =

7. Phòng ch ng l

i phân quy n

Khái ni m phân quy n trong ng d ng web ề ệ Yêu c u: ầ

 Ki m tra quy n trong t ng request g i lên server ừ

ề ử

ử ề

r  Ki m tra quy n trong t ng request g i lên serve ừ ự ử ụ

ể Th c hi n ệ ự ể  Ki m tra quy n th c hi n action: S d ng VSA ệ  Ki m tra quy n tác đ ng d li u ữ ệ ể ể ề ề ộ

Ví dụ

Ban An toàn thông tin Ban An toàn thông tin

32

7. Phòng ch ng l

i phân quy n

Đo n code b l

i ị ỗ

Ban An toàn thông tin Ban An toàn thông tin

33

7. Phòng ch ng l

i phân quy n

Đo n code an toàn

Ban An toàn thông tin Ban An toàn thông tin

34

Ph n III: Th c hành

Ban An toàn thông tin Ban An toàn thông tin

35

Ph n IV: Th o lu n

Question and answer

Ban An toàn thông tin Ban An toàn thông tin

36

37