AJAX và bảo mật:

Một phần của tài liệu Tìm hiểu về AJAX và xây dựng Website có ứng dụng công nghệ AJAX (Trang 29)

Đối tượng XMLHttpRequest được xử lí bảo mật theo mô hình “sandbox” của trình duyệt.

Sức mạnh của phương pháp bảo mật giới hạn này tùy thuộc vào từng trình duyệt. Internet Explorer hiển thị một cảnh báo tình trạng một nguy cơ không an toàn có thể tồn tại và cho phép người dùng sự lựa chọn có tiếp tục với request đó nữa hay không. Trình duyệt Firefox sẽ dừng request lại và hiển thị thông điệp lỗi trên JavaScript.

Trong khi AJAX có thể tăng khả năng sử dụng ứng dụng Web với các ưu điểm của mình, nó cũng đồng thời tạo ra nhiều vấn đề về bảo mật ở cả hai phía máy khách (client) và máy chủ (server):

Tạo nên một diện tấn công lớn hơn trước với nhiều dữ liệu vào (input) cần bảo vệ Phơi bày những chức năng ở bên trong của ứng dụng Web

Cho phép các kịch bản (script) phía máy khách truy xuất đến tài nguyên của bên thứ ba. Điều này rất nguy hiểm nếu như không xây dựng một cơ chế bảo mật tốt.

Lớp lỗ hổng AJAX

Mặc dù AJAX được đánh giá là tập hợp công nghệ mạnh, nhưng cũng không thể tránh được các lỗi hổng bảo mật và nguy cơ ảnh hướng xấu cho các ứng dụng AJAX. Quan niệm sai lầm ở chỗ dùng AJAX an toàn hơn các ứng dụng bình thường. XML Request làm mờ đi lớp script phía server khiến chính những người phát triển nó cảm nhận sai lầm về bảo mật , an toàn mà không an toàn. XML HTTP

Request thực hiện thông qua giao thức như các ứng dụng khác do vậy nó hoàn toàn có thể bị phá theo phương thức như các ứng dụng bình thường khác.

Một điểm yếu khác ở AJAX là chương trình công thức hóa yêu cầu server. Cơ chế hoạt động của AJAX là sử dụng JS để đóng gói lệnh người dùng và chuyển chúng thành lời gọi hàm, Các lời gọi hàm này được gửi tới server dưới dạng văn bản thuần túy và có thể dễ dàng để lộ ra các trường bảng csdl. Từ đó có thể bị hacker lợi dụng và thao tác. Như vậy hacker có thể lợi dùng dữ liệu nhập vào của input hoặc hoàn toàn không thông qua giao diện gửi request có chuối truy vấn đặc biệt nhằm lợi dụng những lỗ hổng này. Ngoài ra lỗi Cross-Site Scripting , các kịch bản độc hại có thể khiến AJAX cung cấp thêm nhiều tính năng hoạt động với vai trò như người dùng thực thụ, do đó lừa đảo người dùng với mục đích cuối cùng là định hướng lại đường dẫn phiên hoạt động hoặc giám sát lưu lượng mạng,

Các nguyên nhân dẫn tới lỗ hổng an ninh

- Validation Confusion : Xác nhận bị nhầm lẫn. - Các nguồn tin không rõ ràng.

- Thực hiện chuyển giao dữ liệu.

Các lỗ hổng hàng đầu trong AJAX

- Chèn cặp Json.

- Nhiễm độc mảng Javascript. - XML bị điều khiển.

- Mã độc trong DOM.

- Cross Domain & Call Back Function. - Chèn mã vào RSS, Atom.

- Chuyển giao đối tượng JS không bình thường. - 1Click Bomb.

CHƯƠNG 3 : DỰ ÁN THIẾT KẾ WEBSITE ỨNG DỤNG AJAX 3.1 Chủ đề, nội dung, thông tin

Chủ đề :

Thiết kế một Website quản lí thông tin. Một portal có khả năng thực hiện cập nhật tin tức và quản lí thư viện hình ảnh, âm thanh , bài viết.

Nội dung :

Người quản lí :

- Quản lí bài viết :

+ Thêm bài viết mới / danh mục mới. + Sửa bài viết / tên danh mục.

+ Xóa bài viết / xóa toàn bộ danh mục & bài viết của nó. + Di chuyển bài viết từ danh mục này qua danh mục khác.

- Quản lí thư viện media : + Thêm hình ảnh / âm thanh. + Xóa hình ảnh / âm thanh. + Thêm , đổi tên , xóa thư mực. - Quản lí thành viên :

+ Xem sửa xóa thông tin người dùng.

Thành viên :

- Bình luận bài viết. ( captcha )

- Xem được các nội dung ẩn trong bài viết. - Sửa đổi được thông tin cá nhân. (adsbygoogle = window.adsbygoogle || []).push({});

Khách :

- Seach AutoComplete ( Search Suggest ) theo Keyword. - Validate Form đăng kí.

- Đăng kí trực tiếp.

- Xóa bài viết trực tiếp.

- Sửa bài viết trực tiếp.

- Bình luận trực tiếp.

- Thêm sửa xóa thư viện ảnh trực tiếp.

3.2 Phân tích hệ thống Website3.2.1 Biều đồ phân rã chức năng 3.2.1 Biều đồ phân rã chức năng

Portal

Giao tiếp người dùng

Quản trị hệ thống

Tạo tài khoản

Hiển thị nội dung Website

Xem bài viết (cả các nội dung ẩn) Tìm kiếm Bình luận Đăng nhập hệ thống

Quản trị tài khoản

Quản trị bài viết

Quản trị thư viện media

Đăng xuất hệ thống

+ Chức năng người dùng:

Người dùng

Cập nhật thay đổi

thông tin cá nhân Lấy lại mật khẩu

Đăng ký thành viên

+ Chức năng xem nội dung :

Hiển thị nội dung website

Xử lý các lựa chọn Hiện thị các chức

năng khác Hiển thị bài viết

+ Chức năng xem bài viết :

Chức năng xem bài viết

Bình luận Hiện thị các chức (adsbygoogle = window.adsbygoogle || []).push({});

năng khác Hiển thị bài viết

+ Quản trị tài khoản :

Quản trị tài khoản

Quản lý quyền Quản lí thành viên

Câọ nhật thành viên

Xóa

Sửa thông tin thành viên

Xem thông tin thành viên

Phân quyền

Sửa quyền

+ Chức năng tìm kiếm :

Tìm kiếm

Theo tiêu đề

Theo ngày

+ Chức năng quản trị bài viết :

Quản trị bài viết

Quản lí bình luận Quản lí danh mục

Xóa danh mục Sửa danh mục

Thêm danh mục Cập nhật thông tin bài viết

Sửa

Xóa Quản lí bài viết

Bình luận

Sửa bình luận ( admin )

+ Chức năng quản trị thư viện media : Thư viện Quản lí thư mục Xóa danh mục Sửa danh mục Thêm danh mục Quản lí hình ảnh Thêm hình ảnh Xóa hình ảnh Đổi tên hình ảnh

3.2.2 Biểu đồ luồng dữ liệu :

Người dùng Portal

Xem bài viết Xem thư viện media

Đăng xuất

Đăng ký

Hiển thị thư viện media Hiển thị bài viết Kết quả đăng xuất (adsbygoogle = window.adsbygoogle || []).push({});

Kết quả đăng ký

Admin Tìm kiếm thông tin

Thêm sửa xóa bài viết

Kết quả tìm kiếm Cập nhật thông tin Tìm kiếm thông tin

Kết quả tìm kiếm

Thành viên

Tạo tài khoản

Người dùng

Xem bài viết

Quản trị bài viết Quản trị tài

khoản Admin

Hệ thống bài viết Cập nhật

Đăng ký

Xem và bình luận bài viết

Cung cấp

Lưu bài viết

Cập nhật Thông tin tài khoản

Hệ thống bình luận

Hệ thống hình ảnh Cung cấp

Cung cấp

Mức dưới đỉnh Chức năng người dùng Tài khoản NGƯỜI DÙNG Thêm mới Quên pass sửa Kết quả đăng ký Kết quả sửa

Thông tin thành viên

Thông tin thành viên

Quên pass

Pass mới

Bài viết

Danh sách bài viết

Xem bài viết

Bình luận bài viết Người dùng

Cung cấp bài viết (adsbygoogle = window.adsbygoogle || []).push({});

Yêu cầu bài viết

Gửi bình luận

Thông tin bình luận Danh mục bài viết

Tìm kiếm bài viết

Người dùng Tìm kiếm bài viết

Kết quả Yêu cầu

Người quản trị : Tài khoản Danh sách thành viên Cập nhật thành viên Tìm kiếm Phân quyền Quản lý quyền Admin Quyền Quyền thành viên Cập nhật thông tin

Thông tin thành vên

Kết quả Yêu cầu

Cập nhật quyền Phân loại thành viên

Bài viết

Admin

Thêm Xóa

Sửa Thêm bài viết / Danh mục

Thông tin Kết quả

Yêu cầu

Sửa bài viết / Danh mục Cập nhật sửa

Thư viện Media

Admin

Thêm Xóa

Thêm hình ảnh / âm thanh

Thông tin Kết quả

Tìm kiếm quản lí

Admin Tìm kiếm bài viết

Yêu cầu

Danh sách bài viết

Kết quả Kết quả

3.3 Thiết kế cơ sở dữ liệu :3.3.1 Thực thể 3.3.1 Thực thể

STT Tên thực thể Tên bảng Ý nghĩa

1 Category U_cat Chứa thông tin danh (adsbygoogle = window.adsbygoogle || []).push({});

mục bài viết

2 Posts U_posts Chứa thông tin các bài

viết

3 Comment U_comment Chứa thông tin các bình

luận và lưu bút

4 Images U_images Chứa thông tin về các

hình ảnh

5 User U_users Chưa thông tin người

3.3.2 Các kiểu quan hệ :

Danh mục – Bài viết : 1 – n

1 bài viết thì chỉ nằm trong một danh mục , một danh mục có thể chứa nhiều bài viết. Do vậy quan hệ danh mục và bài viết là quan hệ 1 nhiều.

Bài viết – Bình luận : 1 – n

1 bài viết có thể có nhiều bình luận , nhưng mỗi một bình luận chỉ nằm trong một bài viết nhất định do vậy quan hệ bài viết và bình luận là quan hệ 1 nhiều.

Bài viết – Hình ảnh : n – n

1 bài viết có thể chứa nhiều hình ảnh , một hình ảnh có thể nằm trong nhiều bài viết. Do vậy quan hệ giữa bài viết và hình ảnh là nhiều nhiều.

Danh mục – Hình ảnh : Quan hệ gián tiếp qua bài viết. Bình luận – Hình ảnh : Không có quan hệ.

Bài viết – Người dùng : n - 1

Một người có thể viết nhiều bài , một bài chỉ được viết bởi một người . Quan hệ giữa bài viết người dùng là nhiều 1

Người dùng – Bình luận : 1 – n

Một người có thể viết nhiều bình luận , một bình luận chỉ có thể viết bởi 1 người , quan hệ của người dùng và bình luận là 1 nhiều

Người dùng – Hình ảnh : n - n

Một người có thể sử dụng nhiều hình ảnh , nhiều hình ảnh có thể sử dụng bởi 1 người. Quan hệ người dùng và hình ảnh là n – n

Bài viết Danh mục Người dùng Bình luận Hình ảnh Bài viết x 1-n n-1 1-n n-n Danh mục x x x x Người dùng x 1-n 1-n Bình luận x x Hình ảnh x 3.3.3 Mô hình thực thể liên kết E – R N-1 Danh mục Bình luận Hình ảnh Bài viết N – N N - 1 Người dùng 1-N 1-N 1-N

3.3.5 Cơ sở dữ liệu :Bảng Category ( u_cat ) Bảng Category ( u_cat )

Tên trường Loại Null Rằng buộc Giải thích

Id Int(11) No Primary key ID của danh mục

Name Varchar(50) No Not null Tên danh mục

ParentId Int(11) No Not null ID danh mục cha

Bảng Posts ( u_posts )

Tên trường Loại Null Rằng buộc Giải thích (adsbygoogle = window.adsbygoogle || []).push({});

Id Int(11) No Primary key ID bài viết

Catid Int(11) No Not null ID Danh mục

của bài viết

Date_edited Date_time No Not null Ngày tháng nhập

hoặc sửa

Title Varchar(100) No Not null Tiêu đề

Content Text No Not null Nội dung

Userid Int(11) No Not null ID người viết

Keyword Varchar(200) No Not null Từ khóa tìm

kiếm

Bảng Comments ( u_comment )

Tên trường Loại Null Rằng buộc Giải thích

Id Int(11) No Primary key ID bình luận

Postid Int(11) No Not null ID bài viết được

bình luận

Comment Text No Not null Nội dung bình

luận

Date_comment Date_time No Not null Ngày tháng bình

Bảng Images ( u_images )

Tên trường Loại Null Rằng buộc Giải thích

Id Int(11) No Primary key ID hình ảnh

Path Text No Not null Dường dẫn

Desc Text No Not null Miêu tả

Date_uploaded Date_time No Not null Ngày đưa lên

Bảng User ( u_user )

Tên trường Loại Null Rằng buộc Giải thích

Id Int(11) No Primary key Id thành viên

Username Varchar(30) No Not null Tên truy nhập

Password Varchar(30) No Not null Mật khẩu

Date_created Date_time No Not null Ngày tạo (adsbygoogle = window.adsbygoogle || []).push({});

Date_login Date_time No Not null Ngày đăng nhập

cuối

type Int(11) No Not null Loại thành viên

3.4 Giao diện chính :

Danh mục

Loading AJAX

KẾT LUẬN

Qua quá trình xây dựng website ứng dụng AJAX:

- Thử nghiệm thành công trên localhost Apache & MySql

- Xây dựng theo mô hình MVC mở , dễ dàng tùy chỉnh và thêm chức năng cho chương trình.

- Tương thích với các trình duyệt.

- Các chức năng trực quan , thân thiện , dễ sử dụng.

Website trong thời gian tìm hiểu còn nhiều thiếu xót và không đạt được hết tất cả các chức năng đề ra. Nhưng về cơ bản đã thể hiện được các tính chất của AJAX. Đây là lần đầu em áp dụng một công nghệ mới cho nên tư duy logic và cách thức lập cấu trúc Website chưa có kinh nghiệm nên tạo ra khá nhiều nhược điểm. Vì vậy em sẽ cố gắng tìm hiểu và học hỏi thêm các kiếm thức và kinh nghiệm , em sẽ hoàn thiện sản phẩm nhanh nhất có thể. Em rất mong nhận được sự đóng góp ý kiến của thầy cô và các bạn để sản phẩm của em được tốt hơn.

Cuối cùng em xin gửi lời cảm ơn chân thành tới Thạc sĩ cô Cao Thu Hương, các giảng viên bộ môn Công nghệ thông tin trường Đại học Kinh Tế Quốc Dân, tập thể các anh chị nhân viên tại VDC-NET2E đã giúp đỡ em rất nhiều trong kì thực tập này.

MỤC LỤC

1.1 Giới thiệu về cơ sở thực tập ... 1

1.2 Giới thiệu về đề tài : ... 2

1.2.1 Lý do chọn đề tài ... 2

1.2.2 Mục tiêu và yêu cầu của đề tài ... 8

2.1 Khái niệm về AJAX, công nghệ AJAX ... 9

2.1.1. Mở đầu ... 9

2.1.3 AJAX là gì ? ... 9

2.1.3 Một số ứng dụng AJAX ... 12

2.2 Các công nghệ sử dụng trong AJAX ... 16

2.2.1 HTML ... 16

2.2.2 CSS ... 18

2.2.3 DOM - Document Object Model ... 19

2.2.4 XML HTTP REQUEST ... 20

2.2.5 XML & Javascript ... 26

2.3 Các bước xây dựng một ứng dụng Ajax ... 28 (adsbygoogle = window.adsbygoogle || []).push({});

2.4 AJAX và bảo mật: ... 29

CHƯƠNG 3 : DỰ ÁN THIẾT KẾ WEBSITE ỨNG DỤNG AJAX ... 32

3.1 Chủ đề, nội dung, thông tin ... 32

3.2 Phân tích hệ thống Website ... 33

3.2.1 Biều đồ phân rã chức năng ... 33

3.2.2 Biểu đồ luồng dữ liệu : ... 39

3.3 Thiết kế cơ sở dữ liệu : ... 45

3.3.1 Thực thể ... 45

3.3.2 Các kiểu quan hệ : ... 46

3.3.3 Mô hình thực thể liên kết E – R ... 47

3.3.5 Cơ sở dữ liệu : ... 48

Một phần của tài liệu Tìm hiểu về AJAX và xây dựng Website có ứng dụng công nghệ AJAX (Trang 29)