Tải bản đầy đủ (.ppt) (37 trang)

Hướng dẫn lập trình an toàn cho ứng dụng Web ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1021.75 KB, 37 trang )

1
Ban An toàn thông tin
Đinh Hữu Công
Hà Nội, 01/2012
Ban An toàn thông tin
Ban An toàn thông tin
2
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
3
Phần I: ATTT cho ứng dụng web
Tổng quan
1
Kiểm soát dữ liệu đầu vào
2
Kiểm soát dữ liệu đầu ra
3
Kiểm soát truy vấn database
4
Kiểm soát thao tác với file
5


Ban An toàn thông tin
Ban An toàn thông tin
4
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ười dùng

Mô hình ứng dụng web, các nguy cơ và cách
phòng chống
Ban An toàn thông tin
Ban An toàn thông tin
5
1. Tổng quan
Web
Browser
Web App
Database
File
Query
Query
Request
Request
I/O
I/O
Response
Response
Kiểm soát
dữ liệu

đầu vào
Kiểm soát
truy vấn
Database
Kiểm soát
dữ liệu
đầu ra
Kiểm soát
Thao tác với
file
-
SQL Injection
-
XSS
-
CSRF
-
Lỗi phân quyền
-
Path traversal
- SQL Injection
- Mã hóa dữ
liệu
-
Path Traversal
-
Upload,
download
-
XSS

Mô hình ứng dụng web
Mô hình ứng dụng web
Các nguy cơ bị tấn công
Các nguy cơ bị tấn công
Thực hiện phòng chống
Thực hiện phòng chống
Ban An toàn thông tin
Ban An toàn thông tin
6
2. Kiểm soát dữ liệu đầu vào

Khái niệm

Dữ liệu do người dùng nhập vào được truyền lên server

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ệ

Kiểm tra phía server là cần thiết

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
3. Kiểm soát dữ liệu đầu ra

Khái niệm

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

Nguy cơ:Lỗi trong quá trình output các dữ liệu
sang HTML gây ra lỗi Cross-Site Scripting (XSS)

Thực hiện: Lọc các ký tự đặc biệt khi output
7
Ban An toàn thông tin
Ban An toàn thông tin
8
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
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 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 đường dẫn

Thực hiện


Chặn các kí tự không hợp lệ trong tên file

Chỉ cho phép upload các file có phần mở rộng hợp lệ
9
Ban An toàn thông tin
Ban An toàn thông tin
10
Phần II: Hướng dẫn lập trình an toàn
Tổng quan
1
Phòng chống SQL Injection
2
Phòng chống XSS
3
Phòng chống CSRF
4
Phòng chống lỗi thao tác file
5
Phòng chống lỗi mã hóa dữ liệu
6
Phòng chống lỗi phân quyền
7
1
Phòng chống lỗi phân quyền
8
Ban An toàn thông tin
Ban An toàn thông tin
1. Tổng quan

Tài liệu do tập đoàn ban hành


Mục tiêu: Phòng chống các lỗi cụ thể khi phát
triển ứng dụng web: SQL Injection, XSS, CSRF,
lỗi thao tác với file, lỗi mã hóa dữ liệu, lỗi phân
quyền

Đối tượng áp dụng: Nhân viên phát triển

Nội dung

Khái niệm

Yêu cầu

Hướng dẫn

Ví dụ minh họa
11
Ban An toàn thông tin
Ban An toàn thông tin
12
2. Phòng chống SQL Injection

Khái niệm SQL Injection

Yêu cầu:

Dữ liệu input từ người dùng phải được truyền dưới dạng
tham số không được sử dụng cách cộng xâu trong các truy
vấn tới cơ sở dữ liệu để tránh lỗ hổng SQL Injection

Ban An toàn thông tin
Ban An toàn thông tin
13
2. Phòng chống SQL Injection

Thực hiện

Truy vấn SQL phải dùng PrepareStatement, tất cả tham số
phải được add bằng hàm( setParam ), không được xử dụng
cách cộng xâu trong truy vấn.

Truy vấn HQL tất cả tham số phải được add bằng
hàm( setParam ), không được xử dụng cách cộng xâu trong
truy vấn

Ví dụ
Ban An toàn thông tin
Ban An toàn thông tin
14
2. Phòng chống SQL Injection
select * from users
where user_name=‘test’ or ‘1’=‘1’
and password=‘fsaf’
Ban An toàn thông tin
Ban An toàn thông tin
15
2. Phòng chống SQL Injection
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 bị lỗi
Đoạn code bị lỗi
Ban An toàn thông tin
Ban An toàn thông tin
17
2. Phòng chống SQL Injection
Đoạn code an toàn
Đoạn code an toàn
Ban An toàn thông tin
Ban An toàn thông tin
18
3. Phòng chống XSS

Khái niệm XSS (Cross Site Scripting)

Yêu cầu:

Thực hiện xử lý với tất cả dữ liệu đầu vào nhận được từ
trình duyệt, loại bỏ hoặc mã hóa dưới dạng HTML các ký
tự đặc biệt do client gửi lên máy chủ: <,>,&,’,”,/

Xử lý các ký tự nguy hiểm trong cơ sở dữ liệu trước khi gửi
tới người dùng: <,>,&,’,”,/
Ban An toàn thông tin
Ban An toàn thông tin
19
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

Ví dụ
Hàm bị lỗi Hàm an toàn
Grid: escapeHTMLInData="false" escapeHTMLInData="true"
${var} ${fn:escapeXml(var)}
<%=var%> <%=StringEscapeUtils.escapeHtml(var)%>
out.print(var) out.print(StringEscapeUtils.escapeHtml(var))
Ban An toàn thông tin
Ban An toàn thông tin
20
3. Phòng chống XSS
Đoạn code bị lỗi
Đoạn code bị lỗi
Ban An toàn thông tin
Ban An toàn thông tin
21
3. Phòng chống XSS
Đoạn code an toàn
Đoạn code an toàn
Ban An toàn thông tin
Ban An toàn thông tin
22
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ườ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
(được tạo ra mỗi đầu phiên truy cập của người dùng) như
một tham số trong phương thức GET hoặc POST và kiểm
tra giá trị token này tại server để xác nhận hành vi của
người dùng
Ban An toàn thông tin
Ban An toàn thông tin
23
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.
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ì yêu cầu sẽ không được
thực hiện

Ví dụ
Ban An toàn thông tin
Ban An toàn thông tin
24
4. Phòng chống CSRF
Đoạn code bị lỗi
Đoạn code bị lỗi
http://localhost:8084/TestStruts/HelloStruts2World.action?userName=123
Ban An toàn thông tin
Ban An toàn thông tin
25

4. Phòng chống CSRF
Đoạn code an toàn
Đoạn code an toàn
http://localhost:8084/TestStruts/HelloStruts2World.action? userName=123&
struts.token.name=struts.token&
struts.token=B154AN2E6MWVG74SZLZCGXN0RHF2546F

×