Đ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