Hướng dẫn lập trình an toàn cho ứng dụng Web
lượt xem 11
download
Những năm gần đây, các dịch vụ thương mại điện tử (TMĐT) như thanh toán trực tuyến, giao dịch trực tuyến ebanking… phát triển không ngừng. Các tiện ích càng được phát triển, doanh nghiệp (DN) càng phải trang bị hạ tầng mạng chuyên nghiệp nhằm đáp ứng nhu cầu vận hành liên tục và bảo mật hệ thống.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Hướng dẫn lập trình an toàn cho ứng dụng Web
- Đinh Hữu Công Ban An toàn thông tin 1 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 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 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ườ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 4
- 1. Tổng quan Kiểm soát - SQL Injection Kiểm soát - SQL Injection dữ liệu - XSS truy vấn - Mã hóa dữ đầu vào - CSRF Database liệu - Lỗi phân quyền - Path traversal Databas Query e Request Web Web Browser App Response I/O File Kiểm soát - XSS Kiểm soát dữ liệu - Path Traversal Thao tác với đầu ra - Upload, file download Môựhình Các Th hiệứ cnguy ơphòng ncngbdị ụtấng ống nchcông web Ban An toàn thông tin 5
- 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 6
- 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 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 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 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ệ Ban An toàn thông tin 9
- 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 18 Phòng chống lỗi phân quyền Ban An toàn thông tin 10
- 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 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: 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 12
- 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 13
- 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 14
- 2. Phòng chống SQL Injection 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 16
- 2. Phòng chống SQL Injection Đoạn code an toàn 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: 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 18
- 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 bị lỗi Hàm an toàn Grid: escapeHTMLInData="false" escapeHTMLInData="true" ${var} ${fn:escapeXml(var)} out.print(var) out.print(StringEscapeUtils.escapeHtml(var)) Ví dụ 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 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giải pháp về bảo mật và an toàn dữ liệu cho điện toán đám mây
6 p | 247 | 70
-
Giáo trình hướng dẫn lập trình bằng ngôn ngữ visual basic trên excel p8
5 p | 189 | 70
-
Bài tập kỹ thuật lập trình C++ Part 2
18 p | 254 | 62
-
Bài tập Thực hành lập trình Web: JavaScript - GV. Trần Công Án
7 p | 370 | 60
-
Mạng riêng ảo VPN - Võ Viết Minh Nhật vs Nguyễn Ngọc Thủy
26 p | 198 | 56
-
Giáo trình thuật toán :Tìm hiểu PLC? phần 2
14 p | 113 | 37
-
Giáo trình thuật toán :Tìm hiểu PLC? phần 3
14 p | 86 | 23
-
Giáo trình thuật toán :Tìm hiểu PLC? phần 8
14 p | 75 | 19
-
Bài giảng Chương 4: Các kỹ thuật kiểm tra tính đúng đắn và tính an toàn của chương trình phần mềm - TS. Vũ Thị Hương Giang
128 p | 293 | 15
-
Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An
32 p | 96 | 14
-
Lập trình Java cơ bản : Xử lý ngoại lệ part 7
4 p | 157 | 12
-
Làm cho Android nhanh, hiệu quả an toàn hơn so với Iphone
3 p | 91 | 11
-
Cách rút thiết bị USB an toàn
3 p | 53 | 8
-
Bổ sung các khả năng an toàn mới trong DB2 9.5, Phần 1: Hiểu rõ các vai trò trong DB2 9.5
48 p | 87 | 5
-
Hướng dẫn đăng nhập Windows 8 bằng mã PIN
5 p | 71 | 4
-
Bài giảng Kỹ thuật lập trình: Chương 4 - TS. Vũ Hương Giang
128 p | 36 | 3
-
Bài giảng Kỹ thuật lập trình: Chương 4 - TS. Vũ Thị Hương Giang
128 p | 36 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn