SQLServer2000 & Bảo mật thông tin:

Một phần của tài liệu Thiết kế và xây dựng website mimes restaurant (Trang 27)

6.1.Thuật toán MD5:

MD để chỉ cho “message digest” (Lấy 2 chữđầu). MD5 là một thuật tóan lấy một tín hiệu vào có chiều dài bất kỳ và đưa ra một tín hiệu digest có chiều dài cốđịnh (128-bit, 32 ký tự hexa), được làm ra từ 1 giá trị hexa (chú ý : mỗi ký tự

hex là 4 bit, do đó 128bit là 32 ký tự hex). Nói rõ hơn một chút : MD5 là cách căn bản để lấy chùm ký tự ( là digits, alphabeic hay gì khác ), được gọi là string nhập vào, và thay đổi chúng thành một chùm ký tự dài 32 ký tự , được gọi là tín hiệu digest (message digest) hay hashes của chuỗi được nhập vào, chuỗi 32 ký tự này

được tạo ra từ các ký tự hexa ( những digits: 0-9 và các chữ a-f). Điều này có nghĩa là, với một chuỗi nhập vào có chiều dài bất kỳ , MD5 sẽ luôn luôn cài đặt “một vài thứ” để thành một chuổi string dài 32 ký tự, mà các ký tự là các ký tự

hexa. Tín hiệu digest sẽ không có khỏang trống, hay dấu hoặc kép hay bất cứ thứ

gì khác 0-9 và a-f trong tín hiệu hashes được xuất ra.

MD5 hashes có tiện dụng là những hashes tạo ra trông khác nhau hòan tòan từ những tín hiệu nhập vào hơi hơi giống nhau. Ví dụ sau sẽ làm rõ hơn vềđiều này:

• Kết quả MD5 hash của chuỗi jim là 5e027396789a18c37aeda616e3d7991b • Kết quả MD5 hash của chuỗi Jim là d54b3c8fcd5ba07e47b400e69a287966 • Kết quả MD5 hash của chuỗi Jimmy là 495b3121d23f5988b133882b36aa7214

N hưđã thấy, có ba tín hiệu nhập vào “hơi hơi giống nhau” nhưng các tín hiệu MD5 hashes xuất ra hòan tòan khác nhau. Ví dụ này cũng chứng minh hai ký tự j và J là 2 ký tự khác nhau. Ởđây cần chú ý thêm là trong ví dụ thứ 3 chỉ thêm vào 2 ký tự (my) ở cuối chuỗi của ví dụ 2 , và hashes của nó đã thay đổi hòan tòan. Vì vậy chúng ta không thể có hashes của chuỗi “Blehlo” từ hashes của chuỗi “Bleh” bằng cách “vá viếu” thêm vài ký tự - thay đổi trong chuỗi nhập vào thì tín hiệu hashes của nó cũng sẽ thay đổi hòan tòan.

Và ởđây cũng nên chú ý với 3 chuỗi nhập vào có chiều dài không giống nhau nhưng các hash sinh ra đều có chiều dài là 32 ký tự (bao gồm các số 0-9 và a-f), ở ví dụ sau cùng ta cũng thấy chuỗi nhập vào dài hơn 2 ký tự so với 2 string trước nhưng chuỗi hash của nó cũng chỉ có 32 ký tự chữ số hex.

Điều quan trọng là chúng ta không thể dịch ngược chuỗi MD5 đã hash về lại chuỗi ban đầu được. Em sẽứng dụng điều này để mã hóa mật khNu khi đăng nhập vào hệ thống. 

6.2.Stored Procedure:

Stored Procedure có một sốưu điểm chính như sau:

Performance (hiệu năng) : Khi thực thi một câu lệnh SQL thì SQL Server phải kiểm tra quyền (permission) xem user gởi câu lệnh đó có được phép thực hiện câu lệnh hay không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan và thực thi. Nếu có nhiều câu lệnh như vậy gởi qua mạng có thể làm giảm đi tốc độ

làm việc của server. SQL Server sẽ làm việc hiệu quả hơn nếu dùng stored procedure vì người gởi chỉ gởi một câu lệnh đơn và SQL Server chỉ kiểm tra một lần sau đó tạo ra một execute plan và thực thi. Nếu stored procedure được gọi nhiều lần thì execute plan có thểđược sử dụng lại nên sẽ làm việc nhanh hơn. N goài ra cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi lưu nên nó không cần kiểm lại khi thực thi.

Reuse (tái sử dụng) : Một khi stored procedure được tạo ra nó có thểđược sử dụng lại. Ðiều này sẽ làm cho việc bảo trì (maintainability) dễ dàng hơn do việc tách rời giữa business rules (tức là những logic thể hiện bên trong stored

procedure) và database. Ví dụ nếu có một sự thay đổi nào đó về mặt logic thì ta chỉ

việc thay đổi mã lệnh bên trong stored procedure mà thôi. N hững ứng dụng dùng stored procedure này có thể sẽ không cần phải thay đổi mà vẫn tương thích với business rule mới. Cũng giống như các ngôn ngữ lập trình khác stored procedure cho phép ta đưa vào các input parameters (tham số) và trả về các output parameters

Security (bảo mật) : Giả sử chúng ta muốn giới hạn việc truy xuất dữ liệu trực tiếp của một user nào đó vào một số bảng, ta có thể viết một stored procedure

để truy xuất dữ liệu và chỉ cho phép user đó được sử dụng stored procedure đã viết sẵn mà thôi chứ không thể "đụng" đến các bảng đó một cách trực tiếp. Ngoài ra stored procedure có thểđược mã hóa (encrypt) để tăng cường tính bảo mật.

Ðể tạo ra một stored procedure ta dùng lệnh CREATE PROCEDURE theo sau là tên của nó. Nếu muốn encrypt thì dùng WITH ENCRYPTION trước chữ AS và các tham số nhập vào(input) hoặc tham số trả về (output). Nếu là output thì thêm keyword OUTPUT đằng sau tham số. Ta có thể cho giá trị mặc định (default) cùng lúc với khai báo kiểu dữ liệu của tham số. Kể từ sau chữ AS là phần thân của stored procedure.

CHƯƠNG 3: Gii Quyết Bài Toán 1. Mô hình hệ thống:

1.1.Mô hình chức năng dành cho người dùng:

Mô hình chức năng dành cho Quản trị và Duyệt đơn hàng:

1.2.Mô hình thự thể kết hợp - Entities Relation Diagram (ERD):

1.3.Mô hình quan hệ - Relationship Diagram:

1.4.Cấu trúc các bảng:

1.4..1. Bảng Slideshow (giới thiệu):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú

SlideID Int Không Tự tăng +1 Khóa chính

Image_ID Nvarchar (50) Không Tham chiếu từ (adsbygoogle = window.adsbygoogle || []).push({});

bảng Images Khóa ngoại Priority Int Có Thứ tự xuất hiện của ảnh 1: là xuất hiện đầu tiên 1.4..2. Bảng Images (hình ảnh):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú

Image_ID Nvarchar (50) Không Tên đại diện Khóa chính

Path Nvarchar (50) Có Tên thật của ảnh

1.4..3. Bảng Events (sự kiện):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú

Event_ID Int Không Tự tăng +1 Khóa chính

Intro Nvarchar (500) Không Mô tả ngắn gọn sự kiện Detail Nvarchar (1000) Không Mô tảđầy đủ sự kiện

Image_ID Nvarchar(50) Không Tham chiếu từ bảng Image Khóa ngoại

Date_from Varchar(50) Không Ngày bắt đầu

Date_to Varchar(50) Không Ngày kết thúc

HomePage int Có Cho phép hiện lên trang chủ 1: hiện 0: Nn

1.4..4. Bảng MainMenu (thực đơn):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú MainMenu_ID Int Không Tự tăng +1 Khóa chính

Name Nvarchar (50) Không Tên thực đơn

Priority Int Có Thứ tự xuất hiện của thực đơn

1: là xuất hiện

đầu tiên

1.4..5. Bảng SubMenu (thực đơn con):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú SubMenu_ID Int Không Tự tăng +1 Khóa chính

Name Nvarchar (50) Không Tên thực đơn

Priority Int Có Thứ tự xuất hiện của thực đơn con

1: là xuất hiện

đầu tiên MainMenu_ID Int Không Tham chiếu từ

bảng MainMenu

Khóa ngoại

1.4..6. Bảng Users (tài khoản):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú UserID Nvarchar (50) Không Tên đăng nhập Khóa chính

Password Nvarchar (50) Không Mật khNu

Role Int Không Quyền người (adsbygoogle = window.adsbygoogle || []).push({});

dùng trên trang web

0: khách hàng 1: quản trị

2: duyệt đơn hàng Email Nvarchar (50) Có Địa chỉ email

Fullname Nvarchar (50) Không Tên họđầy đủ

CellPhone varchar (20) Có Di động Sex Nvarchar (50) Có Giới tính

Banned Int Có Khóa tài khoản 0: bình thường 1: khóa

1.4..7. Bảng Feedback (phản hồi):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú

Fb_ID Int Không Tự tăng +1 Khóa chính

Present Nvarchar (10) Có Cách trình bày Serve Nvarchar (10) Có Thái độ phục vụ

Price Nvarchar (10) Có Giá tốt chưa Delicious Nvarchar (10) Có Món ăn ngon không

SpaceIn Nvarchar (10) Có Không gian nhà hàng

Month varchar (10) Có Tháng

Year varchar (10) Có Năm

1.4..8. Bảng Items (món ăn):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú Item_ID Int Không Tự tăng +1 Khóa chính Item_name Nvarchar (50) Không Tê món

Recipe Nvarchar (1000)

Có Thành phần

Image_ID Nvarchar (50) Không Tham chiếu từ bảng Images Khóa ngoại Item_usage Nvarchar (2000) Có Công dụng, cách dùng

SubMenu

Price varchar (30) Có Giá

Origin Nvarchar (50) Có Vùng

HomePage Int Có Hiện lên trang chủ 1: hiện 0: Nn

Invisible Int Có Ẩn món 0: hiện

1: Nn

1.4..9. Bảng BookDetail (chi tiết đơn hàng):

Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú BookDetail_ID Int Không Tự tăng +1 Khóa chính

BookID Int Không Tham chiếu từ bảng Booked

Khóa ngoại Item_ID Int Không Tham chiếu từ bảng

Items (adsbygoogle = window.adsbygoogle || []).push({});

Khóa ngoại Quantity_Item Int Không Số lượng mỗi món

1.4..10. Bảng Booked (đặt hàng): Tên cột Kiểu dữ liệu Cho phép rỗng Mô tả Ghi chú

BookID Int Không Tự tăng +1 Khóa chính UserID Nvarchar

(50)

Không Tham chiếu từ bảng Users

Book_time varchar (30)

Không Giờ khách đến Book_date Datetime Không Ngày khách đến

N ote Nvarchar (1000) Có Ghi chú Guest_name Nvarchar (50) Có Tên khách đến Guest_phone Nvarchar (50) Có Điện thoại khách đến Guest_Email Nvarchar (50) Có Di động khách đến 1: hiện 0: Nn Status_View varchar (50)

Có Trạng thái đơn hàng New: chưa duyệt Accepted: đồng ý Waitting: chờ xử lý Deny: không chấp nhận

2. Cấu trúc chương trình:

2.1.Người dùng:

2.1..1. Đăng nhập:

2.1..2. Sửa thông tin tài khoản:

2.1..3. Đổi mật khNu:

Hình III-2-1-3: Sơđồ xử lý người dùng đổi mật khNu

2.1..4. Quên mật khNu:

2.1..5. Xem giới thiệu:

Hình III-2-1-5: Sơđồ xử lý người dùng xem giới thiệu

2.1..6. Xem trang chủ:

2.1..7. Xem món ăn:

2.1..8. Đặt hàng:

Hình III-2-1-8: Sơđồ xử lý người dùng đặt món ăn

2.1..9. Xem sự kiện:

2.1..10. Gửi phản hồi:

2.2.Quản trị & người duyệt đơn hàng:

2.2..1. Đăng nhập:

2.2..2. Quản lý SlideShow (giới thiệu):

• Xem:

Hình III-2-2-2-1: Sơ đồ xử lý admin xem giới thiệu • Thêm:

• Xóa: (adsbygoogle = window.adsbygoogle || []).push({});

Hình III-2-2-2-3: Sơđồ xử lý admin xóa giới thiệu • Sửa:

2.2..3. Quản lý Accounts (tài khoản): • Ban (khóa tài khoản):

Hình III-2-2-3-1: Sơđồ xử lý admin khóa tài khoản • Grant (cấp quyền duyệt đơn hàng):

• ChangePass (đổi mật khNu):

Hình III-2-2-3-3: Sơ đồ xử lý Admin/Reviewer đổi mật khNu

2.2..4. Quản lý Events (sự kiện):

• Xem:

• Thêm:

Hình III-2-2-4-2: Sơđồ xử lý admin thêm sự kiện • Xóa:

• Sửa:

2.2..5. Quản lý Menu (thực đơn):

• Xem:

Hình III-2-2-5-1: Sơđồ xử lý admin xem thực đơn • Thêm:

• Xóa:

Hình III-2-2-5-3: Sơđồ xử lý admin xóa thực đơn • Sửa:

2.2..6. Quản lý Submenu (thực đơn con):

• Xem:

Hình III-2-2-6-1: Sơđồ xử lý admin xem thực đơn con • Thêm:

• Xóa:

Hình III-2-2-6-3: Sơ đồ xử lý admin xóa thực đơn con • Sửa:

2.2..7. Quản lý Items (món ăn):

• Xem:

Hình III-2-2-7-1: Sơđồ xử lý admin xem món ăn • Thêm:

• Xóa:

Hình III-2-2-7-3: Sơđồ xử lý admin xóa món ăn • Sửa:

2.2..8. Quản lý Feedback (xem phản hồi):

2.2..9. Quản lý Book (duyệt đơn hàng):

Hình III-2-2-9: Sơ đồ xử lý reviewer xử lý đơn hàng

2.2..10. Quản lý Images (hình ảnh):

• Xem: (adsbygoogle = window.adsbygoogle || []).push({});

• Thêm:

Hình III-2-2-10-2: Sơđồ xử lý admin thêm hình ảnh • Xóa:

• Sửa:

Hình III-2-2-10-4: Sơđồ xử lý admin sửa hình ảnh

3. Các đoạn mã quan trọng:

3.1.Flex:

3.1..1. Tạo HTTPService gửi tham số:

3.2.ASP.NET

3.2..1. N hận tham số & trả kết quả cho Flex:

3.2..3. Tạo Connection theo cơ chế Singleton:

3.3.SQLServer 2000:

CHƯƠNG 4: Kết Qu Thc Hin 1. Cài đặt: 1.1.Yêu cầu hệ thống: Số tt Thành phần Mô tả 1 Hệđiều hành Windows 2000, XP, 2003, Vista 2 Cơ sở dữ liệu SQL Server 2000

3 Web server Internet Information Service 5.0 hoặc cao hơn 4 Trình duyệt Internet Explorer 7.x or Firefox 2.x hoặc cao

hơn

5 Font Arial, Times New Roman, Tahoma 6 .Net Framework 2.0

7 Flash player 9.x Bản activeX cho IE, bản plugin cho firefox,….

1.2.Cài đặt cho cơ sở dữ liệu:

Bước 1: Chép thư mục mimes vào ổđĩa D:

Bước 2: Chọn Start/Microsoft SQL Server/Enterprise Manager, đăng nhập vào SQL Server 2000 (user: sa, password: rỗng).

Bước 3: Chọn Microsoft SQL Servers/ SQL Server Group/ (Local) (WindowsNT), nhấn vào Database.

Bước 5: Chọn nút … , dẫn đến tâp tin Restaurant.mdf (database owner = sa;) từ C:\ mimes, nhấn OK

1.3.Cài đặt cho web trên web server:

Bước 1: Vào thư mục mimes/ chép thư mục mimes vào C:\Inetpub\wwwroot\

Bước 2: Chọn Start/Administrative Tools/Internet Information Services hoặc Control Panel/ Administrative Tools/Internet Information Services.

Bước 3: Từ panel bên trái, mở Local computer/Web sites/Default Web Site.

Bước 4: Nhấn phải lên mimes chọn Property. Trong thẻ Directory chọn Create.

Bước 5: Trong thẻ ASP.NET chọn ASP.NET version: là 2.0.xxxx. Nhấn OK

1.4.Cài đặt plugin:

Bước 2: Nếu máy chưa cài Visual Studio Net 2005 thì vào thư mục mimes. Nhấn vào tập tin CRRedist2005_x86.msi để cài đặt thành phần hiển thị report.

1.5.Hoàn thành: (adsbygoogle = window.adsbygoogle || []).push({});

Mở Internet Explorer 7 hoặc Firefox 2.x, gõ địa chỉ: http://localhost/mimes/mimes.html, chúng ta sẽ thấy:

2. Giải thích chương trình:

2.1.Phía người dùng:

2.1..1. Trang giới thiệu:

Tên Kiểu Bẫy lỗi Sự kiện Hành động

Mimes Image Không Nhấn Mở trang chủ

Ảnh Image Không Nhấn Hiện ảnh đó lên bên trên

2.1..2. Trang bắt đầu:

Tên Kiểu Bẫy lỗi Sự kiện Hành động

Tên đăng nhập Textbox Không

Mật khNu Textbox Không

Đăng nhập Button Không Nhấn Kiểm tra tài khoản đăng nhập

Đăng ký Link Button Không Nhấn Mở trang Đăng ký Quên mật khNu Link Button Không Nhấn Mở trang Quên mật

khNu

Bắt đầu tại đây Image Không Nhấn Mở trang chủ

Trang chủ Button Không Nhấn Mở trang chủ

Thực đơn Button Không Nhấn Mở trang thực đơn Sự kiện Button Không Nhấn Mở trang sự kiện

Một phần của tài liệu Thiết kế và xây dựng website mimes restaurant (Trang 27)