Lời mở đầuCùng với sự phát triển không ngừng về kỹ thuật máy tính và mạng điện tử, công nghệ thông tin cũng được những công nghệ có đẳng cấp cao và lần lượt chinh phục hết đỉnh cao này đến đỉnh cao khác. Mạng Internet là một trong những sản phẩm có giá trị hết sức lớn lao và ngày càng trở nên một công cụ không thể thiếu, là nền tảng chính cho sự truyền tải, trao đổi thông tin trên toàn cầu. Mạng Internet mang lại rất nhiều tiện ích hữu dụng cho người sử dụng, một trong các tiện ích phổ thông của Internet là hệ thống thư điện tử (email), trò chuyện trực tuyến (chat), máy truy tìm dữ liệu(search engine), các dịch vụ thương mãi và chuyển ngân, và các dịch vụ về y tế giáo dục như là chữa bệnh từ xa hoặc tổ chức các lớp học ảo hay cửa hàng ảo. Chúng cung cấp một khối lượng thông tin và dịch vụ khổng lồ trên Internet. Sự phát triển của công nghệ thông tin đã mở ra một lĩnh vực mới, là một bước đột phá trong các nghành khoa học hiện đại. Internet đại diện cho sự phát triển này và được phổ biến rộng rãi khắp toàn cầu. Người ta sử dụng internet để tìm hiểu và cập nhật thông tin như: thông tin thời sự, văn hóa xã hội, thông tin khoa học, kinh tế, thương mại, thể thao vv Giờ đây, mọi việc liên quan đến thông tin trở nên thật dễ dàng cho người sử dụng: chỉ cần có một máy tính kết nối internet cả thế giới sẽ trong tầm tay bạn nó sẽ cung cấp cho bạn những vấn đề mà bạn quan tâm sẽ hiện ra, có đầy đủ thông tin, hình ảnh, âm thanh và video nếu bạn cần Truy cập internet, chúng ta đã thực hiện được nhiều công việc với tốc độ nhanh hơn và chi phí thấp hơn nhiều so với cách thức truyền thống. Chính điều này, đã thúc đẩy sự khai sinh và phát triển của thương mại điện tử trên khắp thế giới, làm biến đổi đáng kể bộ mặt văn hóa, nâng cao chất lượng cuộc sống con người.Trong hoạt động sản xuất, kinh doanh, giờ đây, thương mại điện tử đã khẳng định được vai trò xúc tiến và thúc đẩy sự phát triển của doanh nghiệp. Trong đó các doanh nghiệp , các nhà kinh doanh sử dụng Internet như một vũ khí để cạnh tranh trong kinh doanh như quảng cáo và giao dịch thương mại.Hiện này việc quảng cáo, bán hàng và giao dịch thương mại trên mạng đang dần chiếm ưu thế trên thị trường.Giải thích cho ưu thế này : hình thái hoạt động thương mại bằng phương pháp điện tử; là việc trao đổi thông tin thương mại thông qua các phương tiện điện tử , nói chung là không cần phải in ra giấy bất cứ 1 công đoạn nào trong quá trình giao dịch.Hiện nay, tại các công sở thời gian làm việc gò bó 8 tiếng trong 1 ngày, thời gian để công nhân viên chức không có đủ để dành cho việc đi chợ hàng ngày.Cuối tuần họ thường mua thực phẩm cho cả tuần, liệu thực phẩm còn tươi ngon, còn đảm bảo vệ sinh nữa không?Hãy đến với ĐICHỢ.VN để mua thực phẩm tươi ngon hàng ngày chỉ mất 5 đến 10 phút cho việc đi chợ mà không phải bước chân đi đâu .Em xin được trình bày một cách thức quản lý website giúp cho những người quản trị dễ dàng đối với người quản lý trong việc quản lý, thay đổi, cập nhật thông tin trang web, cũng như quản lý hiệu quả khách hàng và các đơn đặt hàng trên mạng và dễ dàng lựa chọn sản phẩm và thanh toán dễ dàng cho khách mua hàng .
Với ý tưởng này, cùng với những gợi ý và hướng dẫn của thầy Nguyễn Văn Tân, em đã thực hiện đồ án “XÂY DỰNG WEBSITE GIỚI THIỆU VÀ BÁN THỰC PHẨM” như nội dung trình bày sau đây.
56 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3026 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Xây dựng website giới thiệu và bán thực phẩm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
mô tả một file cụ thể, thì có thể tạo một trang mặc nhiên cho Web site hay cho một thư mục, hoặc cấu hình server cho phép duyệt thư mục. Nếu sử dụng trang HTML mặc nhiên cho thư mục, thì trang này sẽ được gửi cho Web browser, còn nếu không có thì một directory listing (phiên bản HTML của Windows Explorer hay File Manager chạy trên trình duyệt) được trả về cho user dưới dạng một trang HTML, trong đó mỗi file và thư mục thể hiện như một siêu liên kết. Sau đó user có thể nhảy đến một file bất kỳ bằng cách click vào siêu liên kết tương ứng trong directory-listing.
CHƯƠNG III: KHÁI NIỆM VỀ THƯƠNG MẠI ĐIỆN TỬ
3.1 Giới thiệu về thương mại điện tử.
Thương mại điện tử là gì?
Là một quá trình mua bán hàng hóa hay dịch vụ thông qua mạng điện tử.Môi trường phổ biến để thực hiện thương mại điện tử là internet.Thương mại điện tử là một hệ thống không chỉ tập trung vào việc mua bán hang hóa , dịch vụ nhằm phát sinh lợi nhuận mà còn nhằm hỗ trợ cho các nhu cầu của khách hang cũng như hỗ trợ các doanh nghiệp giao tiếp với nhau dễ dàng hơn.
Loại hình giao dịch trong thương mại điện tử.Có 3 loại hình giao dịch chính:
B-2-C: giữa doanh nghiệp với khách hàng .
C-2-C: giữa khách hàng với khách hàng .
B-2-B: giữa doanh nghiệp với doanh nghiệp.
Ở đây sử dụng mô hình B-2-C: giữa doanh nghiệp với khách hàng .
Lợi ích của thương mại điện tử (TMĐT) là gì?
Lợi ích đối với người tiêu dùng:
•Mua hàng được 24/24h.
•Mua hàng trên toàn thế giới.
•Lựa chọn được hàng hóa theo sở thích với giá rẻ và chất lượng hơn.
•TMĐT qua INTERNET giúp người tiêu giảm đáng kể thời gian và chí phí giao dịch.
•Có thể xem rất nhiều hàng thậm chí có thể chạy thử với các phần mềm chuyên dụng trước khi mua.
•Có thể tham gia đấu giá.
•Trao đổi thông tin với người tiêu dùng khác.
Lợi ích với doanh nghiệp:
Cho phép mở rộng thị trường.
Giảm chi phí hoạt động.
Giảm chi phí quản lý kho.
Cho phép cá thể hóa khách hàng.
Giảm thời gian thanh toán,giao dịch.
Giảm chi phí thông tin lien lạc.
Giảm chi phí quảng cáo.
Xây dựng quan hệ với nhiều đối tác.
Cho phép làm việc ở nhà.
Hàng hóa mua bán với giá thấp cho lợi ích xã hội lớn.
Không có sự phân biệt vùng sâu, vùng xa.
Cung cấp dịch vụ công ích,từ đó tạo lợi nhuận cho người dân.
Xây dựng chính phủ điện tử: tạo quan hệ trực tuyến giữa công dân và nhà nước.
3.2 Giới thiệu về cửa hàng trên mạng internet .
Cửa hàng trên mạng internet thực chất là gì?
Trong không gian ảo của cửa hàng được xây dụng bằng phần mềm, các sản phẩm là những hình ảnh đại diện cho sản phẩm để giao dịch. Tận dụng tính đa phương tiện của môi trường inter net, các cửa hàng trực tuyến(các website) được xây dựng trên nền tảng HTML giúp cho doanh nghiệp và khách hàng ,khách hàng với khách hàng có thể tìm hiểu và trao đổi thông tin,mua bán hàng hóa trên mạng 1 cách thuận tiện và dễ dàng.
Đichợ.vn giống như một siêu thị nhưng quy mô bán hàng của nó chỉ gói gọn trong hàng hóa về thực phẩm.
Cửa hàng trên mạng hoạt động như thế nào ?
Do đặc điểm nổi bật của cửa hàng trên mạng internet là người mua hàng và người bán không hề gặp mặt nhau.Cái khó của khách hàng là không thể trực tiếp kiểm tra mặt hàng cần mua( sản phẩm này thế nào, nguồn gốc ra sao ?). khi đi mua hàng trên cửa hàng ảo, khách hàng luôn mong muốn được phục vu với một chất lượng ngang bằng với khi mua hàng ở cửa hàng thật.
Do đó để xây dựng cửa hàng ảo,cần phải xây dựng cho cửa hàng ảo những chức năng sau :
Quản lý khách hàng.
Quản lý mua hàng.
Quản lý các mặt hàng.
Bán hàng.
Quản lý và xử lý đơn hàng.
Xúc tiến quảng bá sản phẩm.
3.3 Mục tiêu và yêu cầu khi xây dựng hệ thống.
Mục tiêu xây dựng hệ thống :
+Nhằm đắp ứng nhu cầu mở rộng của thi trường tiêu thụ hàng hóa.
+Thông tin luôn được cập nhật mới và luôn đáp ứng nhu cầu tìm kiếm thông tin của khách hàng. Bên cạnh đó còn tiết kiệm được thời gian và chi phí đi lại cho khách hàng.
Những yêu cầu đặt ra cho hệ thống.
+Hỗ trợ cho khách hàng :
An toàn khi mua hàng.
Mua hàng thông qua internet.
Thanh toán qua tín dụng, thanh toán trực tiếp…
+Hỗ trợ cho người quản trị :
Hệ thống sẽ cung cấp cho người quản trị một mật khẩu để người quản trị truy cập vào hệ thống,thao tác trên cơ sở dữ liệu như :
Bổ sung,câp nhật dữ liệu.
Quản lý đơn hàng và khách hàng….
CHƯƠNG IV : LÝ THUYẾT CƠ SỞ
4.1 Ngôn ngữ lập trình web PHP
4.1.1 Php là gì?
Cái tên PHP ban đầu được viết tắt bởi cụm từ Pesonnal Home Page,và được phát triển từ năm 1994 bởi Rasmus Lerdorf. Lúc đầu chỉ là một bộ đặc tả Perl, được sử dụng để lưu dấu vết người dung là một máy đặc tả (Scripting engine).Vào giữa năm 1997, PHP đã được phát triển nhanh chóng trong sự yêu thích của nhiều người. PHP đã không còn là một dự án cá nhân của Rasmus Lerdorf và đã trở thành một công nghệ web qua trọng. Zeev Suraski và An di Gutmans đã hoàn thiện việc phân tích cú pháp cho ngôn ngữ để rồi tháng 6 năm 1998, PHP3 đã ra đời (phiên bản này có phần mở rộng là *.php3). Cho đến tận thời điểm đó , PHP chưa một lần được phát triển chính thức, một yêu cầu viết lại bộ đặc tả được đưa ra, ngay sau đó PHP4 ra đời ,PHP 4 nhanh hơn PHP3 rất nhiều. Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát triển PHP tự mãn.Cộng đồng php đã nhanh chóng giúp họ nhận ra những yếu kém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP), xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ trợ dịch vụ web yếu. Những điểm này chính là mục đích để Zeev và Andi viết Zend Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot đã cho thấy việc phát triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12 năm 2002 nhưng những bài phỏng vấn Zeev liên quan đến phiên bản này thì đã có mặt trên mạng Internet vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã chính thức được công bố để cộng đồng kiểm nghiệm. Đó cũng là phiên bản đầu tiên của Zend Engine 2.0. Phiên bản Beta 2 sau đó đã ra mắt vào tháng 10 năm 2003 với sự xuất hiện của hai tính năng rất được chờ đợi: Iterators, Reflection nhưng namespaces một tính năng gây tranh cãi khác đã bị loại khỏi mã nguồn. Ngày 21 tháng 12 năm 2003: PHP 5 Beta 3 đã được công bố để kiểm tra với việc phân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các hàm PHP bên trongXSLT, sửa chữa nhiều lỗi và thêm khá nhiều hàm mới. PHP 5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP.
Ngày 14 tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu sự chín muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong việc tạo ra một hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực hiện các câu truy vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục có những cải tiến trong nhân Zend Engine 2, nâng cấp mô đun PCRE lên bản PCRE 5.0 cùng những tính năng và cải tiến mới trong SOAP, streams và SP<script type="text/javascript"
Hiện nay phiên bản tiếp theo của PHP đang được phát triển. Phiên bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên bản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn chưa công bố rõ ràng về vấn đề này); hỗ trợ Unicode; sử dụng PDO làm API chuẩn cho việc truy cập cơ sở dữ liệu, các API cũ sẽ bị đưa ra thành thư viện PECL...
PHP bây giờ được gọi là PHP: Hypertext Preprocessor là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng và có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô doanh nghiệp.
PHP ở cấp doanh nghiệp
Rất nhiều nhà phát triển ứng dụng và quản lý dự án có quan điểm rằng PHP vẫn chưa sẵn sàng cho cấp doanh nghiệp (enterprise) và trên thực tế, PHP vẫn chưa xâm nhập sâu được vào thị trường này. Chính vì thế, Zend đã tiến hành nhiều biện pháp nhằm chuẩn hóa PHP, tạo được sự tin cậy hơn cho giới người dùng cao cấp.
Zend Platform là một bộ sản phẩm giúp quản lý hệ thống ứng dụng PHP, nâng cao hiệu suất, tăng tốc độ của ứng dụng PHP.
Zend Framework là một tập hợp các lớp, các thư viện lập trình viết bằng PHP (PHP 5) nhằm cung cấp một giao diện lập trình chuẩn cho các nhà phát triển ứng dụng.
Ngoài ra, một số framework khác cũng đã được phát triển nhằm hỗ trợ lập trình PHP ở cấp doanh nghiệp, trong đó đáng chú ý có thể kể đến là CodeIgniter, CakePHP, Symfony, Seagull...
Cú pháp
Một ví dụ về mã PHP đã được làm nổi bật bằng màu nhúng trong HTML
PHP chỉ phân tích các đoạn mã nằm trong những dấu giới hạn của nó. Bất cứ mã nào nằm ngoài những dấu giới hạn đều được xuất ra trực tiếp không thông qua xử lý bởi PHP. Các dấu giới hạn thường dùng nhất là , tương ứng với dấu giới hạn mở và đóng. Các dấu giới hạn và cũng đôi khi được sử dụng. Cách viết dấu giới hạn dạng thẻ ngắn cũng có thể được dùng để thông báo bắt đầu đoạn mã PHP, là . Những thẻ này thường xuyên được sử dụng, tuy nhiên giống với những thẻ kiểu ASP (), chúng không có tính di động cao bởi có thể bị vô hiệu khi cấu hình PHP. Bởi vậy, việc dùng các thẻ dạng ngăn hay các thẻ kiểu ASP không được khuyến khích. Mục đích của những dấu giới hạn này là ngăn cách mã PHP với những đoạn mã thuộc ngôn ngữ khác, gồm cả HTML. Mọi đoạn mã bên ngoài các dấu này đều bị hệ thống phân tích bỏ qua và được xuất ra một cách trực tiếp.
Các biến được xác định bằng cách thêm vào trước một dấu đô la ($) và không cần xác định trước kiểu dữ liệu. Không giống với tên hàm và lớp, tên biến là trường hợp nhạy cảm. Cả dấu ngoặc kép ("") và ký hiệu đánh dấu văn bản (<<<EOF EOF;) đều có thể dùng để truyền xâu và giá trị biến.PHP coi xuống dòng như một khoảng trắng theo kiểu như một ngôn ngữ dạng tự do (free-form language) (trừ khi nó nằm trong trích dẫn xâu), và các phát biểu được kết thúc bởi một dấu chấm phẩy.PHP có ba kiểu cú pháp chú thích: /* */ cho phép một đoạn chú thích tùy ý, trong khi đó // và # cho phép chú thích trong phạm vi một dòng.Phát biểu echo là một trong những lệnh của PHP cho phép xuất văn bản (vd. ra một trình duyệt web).
Về cú pháp các từ khóa và ngôn ngữ, PHP tương tự hầu hết các ngôn ngữ lập trình bậc cao có cú pháp kiểu C. Các phát biểu điều kiện If (Nếu), vòng lặp for và while, các hàm trả về đều tương tự cú pháp của các ngôn ngữ như C, C++, Java và Perl.
4.1.2 JavaScript
4.1.2.1 JavaScript là gì?
JavaScript được thiết kế để thêm tương tác cho các trang HTML.
Một ngôn ngữ lập trình kịch bản là 1 ngôn ngữ lập trình nhẹ.
JavaScript thường được nhúng trực tiếp vào trong các trang HTML.
JavaScript là 1 ngôn ngữ thông dịch(interpreted language)-có nghĩa là các script thực thi mà không có sự biên dịch sơ bộ.
4.1.2.2 JavaScript có thể làm gì ?
JavaScript cung cấp cho các nhà thiết kế HTML 1 công cụ lập trình - các tác giả viết HTML thường không phải là các lập trình viên, nhưng JavaScript là 1 ngôn ngữ kịch bản với cấu trúc rất đơn giản! Hầu như bất cứ ai cũng có thể đặt 1 đoạn code nhỏ vào trong trang HTML của họ.
JavaScript có thể đặt các đoạn text động vào trong 1 trang HTML - Một chỉ thị JavaScript như sau: document.write("<h1>" + name + "</h1>") có thể viết 1 biến text vào 1 trang HTML.
JavaScript có thể phản ứng với các sự kiện .
JavaScript có thể thiết lập thực thi khi có 1 việc gì đó xảy ra, như khi 1 trang đã được load xong hoặc khi người dùng click vào 1 phần tử HTML.
JavaScript có thể đọc và viết các phần tử HTML(HTML elements).
JavaScript có thể đọc và thay đổi nội dung của 1 phần tử HTML.
JavaScript có thể được sử dụng để ràng buộc dữ liệu(validate data) .
JavaScript có thể được sử dụng để ràng buộc dữ liệu của form trước khi nó được gửi đến server.
JavaScript có thể sử dụng để nhận biết trình duyệt của người truy cập.
JavaScript có thể được sử dụng để nhận biết trình duyệt của người truy cập, và - tùy thuộc vào trình duyệt - tải một trang khác được thiết kế đặc biệt cho trình duyệt.
JavaScript có thể được sử dụng để tạo các cookie .
Một mã JavaScript có thể được sử dụng để lưu trữ và lại thông tin trên máy tính của người truy cập .
4.1.2.3 Đối tượng trong javascript
Kiểu của JavaScript được chia ra làm hai loại: kiểu cơ bản và đối tượng. Đối tượng trong JavaScript là một thực thể có tên xác định và có thuộc tính trỏ đến giá trị, hàm hoặc cũng có thể là một đối tượng khác. Có nghĩa là, đối tượng trong JavaScript là một mảng kết hợp (associative array) tương tự như mảng trong PHP hay từ điển trong Python
JavaScript có một số đối tượng định nghĩa sẵn, bao gồm mảng (Array), đối tượng đại số Bool (Boolean), đối tượng ngày tháng (Date), đối tượng hàm (Function), đối tượng toán học (Math), đối tượng số (Number), đối tượng đối tượng (Object), đối tượng biểu thức tìm kiếm (RegExp) và đối tượng chuỗi ký tự (String). Các đối tượng khác là đối tượng thuộc phần mềm chủ (phần mềm áp dụng JavaScript - thường là trình duyệt).
Ví dụ:
function samplePrototype() {
this.attribute1 = "someValue"; // thêm một thuộc tính cho đối tượng
this.attribute2 = 234; // thêm thuộc tính nữa cho đối tượng
this.function1 = testFunction; // thêm một hàm vào đối tượng
}
function testFunction() {
alert(this.attribute2); //hiển thị 234
}
var sampleObject = new samplePrototype; // khởi tạo một đối tượng
sampleObject.function1(); // gọi hàm function1 của đối tượng sampleObject
sampleObject.attribute3 = 123; // thêm một thuộc tính nữa cho đối tượng sampleObject
delete sampleObject.attribute1; // xóa bỏ 1 thuộc tính
delete sampleObject; // xóa bỏ đối tượng
4.1.2.4 Hàm trong javascript
Hàm là một khối các câu lệnh với một danh sách một hoặc nhiều đối số (có thể không có đối số) và thường có tên (mặc dù trong JavaScript hàm không nhất thiết phải có tên). Hàm có thể trả lại một giá trị. Cú pháp của hàm như sau:
function tên_hàm(đối_số_1, đối_số_2)
{
các câu lệnh cần thực hiện mỗi khi hàm được gọi;
return giá_trị_cần_trả_về;
}
tên_hàm(1, 2); // Gọi hàm tên_hàm với hai đối số 1 và 2 ứng với đối_số_1 và đối_số_2
tên_hàm(1); // Gọi hàm tên_hàm với đối_số_1 có giá trị 1, đối_số_2 có giá trị undefined
Trong JavaScript, khi gọi hàm không nhất thiết phải gọi hàm với cùng số đối số như khi định nghĩa hàm, nếu số đối số ít hơn khi định nghĩa hàm, những đối số không được chuyển cho hàm sẽ mang giá trị undefined.
Các kiểu cơ bản sẽ được chuyển vào hàm theo giá trị, đối tượng sẽ được chuyển vào hàm theo tham chiếu.
Hàm là đối tượng hạng nhất trong JavaScript. Tất cả các hàm là đối tượng của nguyên mẫu Function. Hàm có thể được tạo và dùng trong phép toán gán như bất kỳ một đối tượng nào khác, và cũng có thể được dùng làm đối số cho các hàm khác. Do đó, JavaScript hỗ trợ hàm cấp độ cao .
Gọi Hàm: Ban đầu khi bạn không gọi hàm thì hàm sẽ không hoạt động, có nghĩa là tất cả những gì bên trong nó sẽ không được thực hiện khi Javascript load. Vì thế ta cần có thao tác gọi nó lên để những hành động trong nó được thực hiện.Rất đơn giản bạn chỉ cần ghi lại tên hàm mà thôi .
Ví dụ:
function goiham(){document.write ("Chào mọi người");document.writeln("Chào mọi người");} goiham()
Các hàm có sẵn
EVAL
Cú pháp:
returnval=eval (bất kỳ biểu thức hay lệnh hợp lệ trong Java)
PARSEINT
Cú pháp
parseInt (string, [, radix])
PARSEFLOAT
Cú pháp
parseFloat (string)
VD: \
perseInt Exemple
document.write("Converting 0xC hex to base-10: " + parseInt(0xC,10) + "");
document.write("Converting 1100 binary to base-10: " + parseInt(1100,2) + "");
4.1.3 Phần mềm hỗ trợ thiết kế web Macromedia Dreamweaver 8
Macromedia Dreamweaver 8 là trình biên soạn HTMl chuyên nghiệp dùng để thiết kế, viết mã và phát triển website cùng các trang web và các ứng dụng web. Cho dù bạn có thích thú với công việc viết mã HTML thủ công hoặc bạn thích làm việc trong môi trường biên soạn trực quan, Dreamweaver cung cấp cho bạn những công cụ hữu ích để nâng cao kinh nghiệm thiết kế web của bạn. Hướng dẫn này giới thiệu cho bạn cách sử dụng Macromedia Dreamweaver 8 nếu bạn chưa quen với các khía cạnh chính của nó. Những bài hướng dẫn trong mục hướng dẫn này dẫn bạn qua các quá trình tạo một website đơn giản nhưng đầy đủ chức năng. Các tính năng biên soạn trực quan trong Dreamweaver cho phép bạn tạo nhanh các trang web mà không cần các dòng mã. Bạn có thể xem tất cacr các thành phần trong website của bạn và kéo chúng trực tiếp từ một panel dễ sử dụng vào 1 văn bản. Bạn có thể nâng cao sản phẩm của bạn bằng cách tạo và sửa các ảnh trong Macromedia Fireworks hoặc trong ứng dụng ảnh khác, rồi sau đó chèn trực tiếp vào Dreamweaver. Dreamweaver cũng cung cấp những công cụ giúp đơn giản hóa việc chèn Flash vào trang web. Bên cạnh những tính năng kéo và thả giúp xây dựng trang web của bạn, Dreamweaver còn cung cấp một môi trường viết mã đầy đủ chức năng bao gồm các công cụ viết mã (như tô màu mã, bổ sung thẻ tag, thanh công cụ mã và thu bớt mã) và nguyên liệu tham chiếu ngôn ngữ trong Cascading Style Sheets (CSS), JavaScript, ColdFusion Markup Language (CFML) và các ngôn ngữ khác. Công nghệ Macromedia Roundtrip HTML nhập các văn bản HTML viết mã thủ công mà không định dạng lại mã; khi đó bạn có thể định dạng lại mã với phong cách định dạng của riêng bạn. Dreamweaver cũng cho phép bạn xây dựng các ứng dụng web động dựa theo dữ liệu sử dụng công nghệ máy chủ như CFML, ASP.NET, ASP, JSP, và PHP. Nếu sở thích của bạn là làm việc với dữ liệu XML, Dreamweaver cung cấp những công cụ cho phép bạn dễ dàng tạo các trang XSLT, chèn file XML và hiển thị dữ liệu XML trên trang web của bạn. Dreamweaver có thể tùy biến hoàn toàn. Bạn có thể tạo cho riêng mình những đối tượng và yêu cầu, chỉnh sửa shortcut bàn phím và thậm chí viết mã JavaScript để mở rộng những khả năng của Dreamweaver với những hành vi mới, những chuyên gia giám định Property mới và những báo cáo site mới.
4.1.4 Giới thiệu về AppServ AppServ là dự án tích hợp, cài đặt nhanh chóng, đơn giản các mô phỏng máy chủ web như Apache, PHP, MySQL... trên nền hệ điều hành Windows – rất thuận tiện cho việc nghiên cứu, phát triển và kiểm tra các ứng dụng web lập trình bằng PHP. Ưu điểm : gọn nhẹ , tương thích cao & đầy đủ các chức năng để chạy PHP !
AppServ bao gồm :Webserver Apache, PHP, MySQL, PHPMyAdmin.
4.2 Bảo mật web trong lập trình trong PHP
4.2.1Giới thiệu bảo mật Trước khi khảo sát các kiểu tấn công và làm thế nào để phát hiện và bảo vệ trước mỗi cuộc tấn công? Nó là cần thiết để thiết lập các nguyên lý bảo mật cơ bản cho web. Các nguyên lý này không khó để có thể hiểu được nhưng nó yêu cầu có sự chú tâm(mindset) đến dữ liệu. Sự chứ tấm đến bảo mật nghĩa là bạn phải coi tất cả dữ liệu là hỏng(không hoàn toàn đúng yêu cầu) và dữ liệu đó phải được lọc trước khi sử dụng hoặc đưa ra ngoài hoặc khi xoá bỏ dữ liệu khỏi dụng. Hiểu và làm theo nó là cơ sở và bản chất bảo mật cho ứng dụng của bạn.4.2.1.1 Tất cả dữ liệu nhập là “không an toàn” Có lẽ quan trọng nhất trong mọi giao dịch là sự tin cậy vào dữ liệu. Bạn chắc chắn tất cả dữ liệu sử lý của bạn là an toàn? trả lời câu hỏi đó rất dễ nếu bạn biết nguồn gốc dữ liệu. Nếu dữ liệu của bạn bắt đầu từ bên ngoài như từ form nhập dữ liệu, chuỗi truy vấn hay thậm chí từ RSS nó không phải là dữ liệu an toàn nó là dữ liệu “không an toàn”. Dữ liệu từ nguồn này và các nguồn khác là “Chưa an toàn” bơỉ vì nó không chắc chắn, nội dung của nó chứa các kí tự nguy hiểm cho hệ thống. Ví dụ chuỗi truy vấn user có thể thay đổi bằng tay và thêm vào đó các thẻ javascipt kết quả có thể dẫn đến có hại cho hệ thống một quy tắc chung nhất của tất cả các biến mảng toàn cục(superglobals) lên cân nhắc kỹ khả năng “Chưa an toàn” . Đây là lý do cho tất cả hoặc một vài các mảng superglobals khi nhận dữ liệu từ bên ngoài. Thậm chí $_SERVER không phải luôn an toàn bởi một vài dữ liệu cung cấp từ client. Một trường hợp ngoại lệ với nguyên tắc này, cái chỉ được chạy trên server . Trước khi sử lý dữ liệu “Chưa an toàn” trước khi sử dụng chúng thì phải lọc chúng, một dữ liệu được lọc sau đó nó an toàn với người sử dụng. Có hai cách tiếp cận lọc dữ liệu: whitelist và Blacklist .4.2.1.2 Lọc Whitelist và Blacklist Có 2 phương pháp tiếp cận phổ biến Whitelist và Blacklist. Phương pháp tiếp cận blacklist ít hạn chế hơn trong quá trình lọc dữ liệu và có thể hiểu rằng lập trình viên có thể biết mọi thứ và không cho phép dữ liệu này đi qua - Ví dụ: một vài diễn đàn lọc các từ thô tục sử dụng blacklist. Đó là những từ không thích hợp với diễn đàn những từ này bị lọc ra khỏi bài viết cong những từ khác không có trong danh sách cho phép hiện ra. Tuy nhiên cần thêm vào danh sách các từ bị cấm trong khoảng thời gian. Ví dụ này không liên quan trực tiếp đến chủ đề trực tiếp để lập trình viên giảm thiểu sự tấn công nhưng nó nêu ra vấn đề tồn tại của cách sử dụng Blacklist là: blacklist phải sửa đổi cập nhật liên tục, phải mở rộng khi gặp kiểu tấn công mới. Cách khác dùng whilelist có nhiều hạn chế hơn cho người dùng, chỉ cung cấp khả năng người dùng chấp nhận. Thay vì phải kiểm tra có chấp nhận được hay không whilelist chỉ cung cấp duy nhất dữ liệu chấp nhận được. Thông tin này đã sẵn sàng khi bạn phát triển ứng dụng, nó có thể phát triển trong tương lai. Nhưng bạn điều khiển các thông tin này bằng những tham số. Khi bạn điều khiển dữ liệu mà nó được chấp nhận thì các kẻ tấn công không thể chuyển cho bất kỳ khác ngoài whilelist cho phép. Vì lý do đó whilelist bảo vệ mạnh mẽ hơn Blacklist.4.2.1.3 Lọc dữ liệu đầu vào (Filter Input) Từ những dữ liệu không chắc an toàn bạn không thể tin tưởng được , nó là cần thiết để lọc dữ liệu nhập. Ví dụ sử dụng whilelist trong form sau: Username: Password: Favourite colour: RedBlueYellow Green Trên form có ba phần tử: username, password và color trong đó giới hạn tên chỉ lên là các chữ cái, còn mật khẩu yêu cầu có cả chữ cái và số và màu chỉ hiển thị enable Red và Blue. Chúng ta có thể dùng javascript để giới hạn hiển thị màu. Người dùng chi có thể gửi thông tin giới hạn trong form điều đó cực kỳ quan trọng trong bảo mật cho site. Lọc dữ liệu nhập từ form, bắt đầu bằng khởi tạo một mảng trắng nó chứa các phần tử dữ liệu đã được lọc . Khi nào gặp biến này $clean[’username’], bạn xác đinh rằng biến này đã được lọc. Tuy nhiên bạn có thể sử dụng $_POST[’username’] tuy nhiên bạn không thể khẳng định rằng dữ liệu này có thể chấp nhận được. Loại bỏ các biến và sử dụng $clean thay thế .Ví dụ:$clean = array(); if (ctype_alpha($_POST[’username’])) { $clean[’username’] = $_POST[’username’];}if (ctype_alnum($_POST[’password’])) { $clean[’password’] = $_POST[’password’];}$colours = array(’Red’, ’Blue’, ’Yellow’, ’Green’); if (in_array($_POST[’colour’], $colours)) { $clean[’colour’] = $_POST[’colour’];} Việc sử dụng whilelist phải đảm bảo chắc chắc bạn không nhận được dữ liệu xấu. Ví dụ : một ai đó cố gắng nhập vào username và color không cho phép sử lý. Điều tồi tệ xẩy ra là $clean không chứa giá trị username và color, nếu user name được yêu cầu một mẩu tin báo lỗi sẽ hiện lên yêu cầu nhập dữ liệu đúng. bạn cần phải bắt buộc người dùng nhập vào thông đúng hơn là cố gắng lọc dữ liệu. nếu bạn cố lọc dữ liệu bạn cần có những kết luận về những dữ liệu xấu, nó gặp số vấn đề khi sử dụng với blacklist
4.2.1.4 Escape Output Output là lấy dữ liệu của ứng dụng hiển thị trên client – Client yêu cầu load web từ một web Browser tới web server, web server thực thi bằng cách truy cập CSDL lấy dữ liệu. dữ liệu lấy ra và lọc, bạn cần chánh khỏi tất cả các dữ liệu làm vỡ dữ liệu. Việc lọc Escape Output để bảo vệ client và người dùng những lệnh có hại tiềm tàng, Escape Output hiểu nó như một phần của như bộ lọc dữ liệu, hai cái đều quan trọng như nhau, bộ lọc để chắc chắn rằng tính hợp lệ của dữ liệu nhập cho ứng dụng còn , tránh khỏi những nguy cơ tấn công có hại cho hệ thống. CSDL server khi làm việc gặp các kí tự đặc biệt. Từ trình duyệt các kí tự là các thẻ HTML đối với database Server là các kí tự đánh dấu quote và các câu lênh SQL làm thế nào khi ouput nó hiểu đúng. Để sử lý escape output cho web browser PHP cung cấp hàm htmlspecialchars() và hàm htmlentities() được đề nghị để sử lý chức năng này. Ví dụ sau đây sẽ sử dụng htmlentities() để minh hoạ sử lý dữ liệu trước khi gửi đến browserVí dụ:$html = array(); $html[’message’] = htmlentities($user_message, ENT_QUOTES, ’UTF-8’); echo $html[’message’]; Escape output dành cho database server như cấu trúc các lệnh truy vấn ta sử dụng các hàm *_escape_string() . Từ PHP 5.x bao gồm PHP Data Objects (PDO), bạn có thể sử dụng prepared statements cho tất cả các CSDL bằng trình điều khiển PDO. Sử dụng chuẩn bị dữ liệu trong cấu trúc giúp bạn chỉ rõ nơi quan trọng trong câu lệnh SQL và có thể sử dụng nhiều lần trong một lần khai báo và thay thế giá trị trong mỗi thời gian.Ví dụ đơn giản để kết nối tham số:// First, filter the input $clean = array(); if (ctype_alpha($_POST[’username’])) { $clean[’username’] = $_POST[’username’];}// Set a named placeholder in the SQL statement for username $sql = ’SELECT * FROM users WHERE username = :username’; // Assume the database handler exists; prepare the statement $stmt = $dbh->prepare($sql); // Bind a value to the parameter $stmt->bindParam(’:username’, $clean[’username’]); // Execute and fetch results $stmt->execute(); $results = $stmt->fetchAll();
4.2.1.5 Đăng kí biến toàn cục(Register Globals) Khi the register_globals được đặt là ON, tẩt cả các biến: chuỗi truy vấn, post Form, Session, cookies … có thể sử dụng tên biến để truy cập thông tin.Ví dụ:giả sử biến môi trường register_globals được đặt là ON biến $loggedin chưa được khởi tạo nên hàm checkLogin() cho giá trị là false dễ dàng có thể gán $loggedin=1 bằng cách truyền thêm vào chuỗi truy vấn. Cách đơn giản là gán $loggedin=false ở đầu đoạn mã:if (checkLogin()) { $loggedin = TRUE;}if ($loggedin) { // do stuff only for logged in users} Chúng ta bị điều này này là do register_globals là ON vì vậy có thể gán giá trị cho $loggedin thông qua chuỗi truy vấn, form, cookies…tốt nhất khi làm việc với chúng chúng ta dung những siêu mảng do PHP cung cấp $_GET, $_POST, or $_COOKIE.Chú ý: trước PHP 4.2.0 thì register_globals mặc định là ON nhưng từ phiên bản sau nó thì mặc định là off và tương lại PHP 6.0 cũng vậy.4.3.Bảo mật trong lập trình PHP4.3.1 Bảo mật website Bảo mật website là phải chú ý đến từng phần tử của trang web mà kẻ tấn công có thể lợi dụng thông qua giao diện của ứng dụng. Điểm yếu hay bị lợi dụng nhất đó là bao gồm form và các URL, nên việc bảo mật web có nghĩa là kiểm tra tính hơpk lệ của form và link.4.3.1. 1 Form lừa đảo Phổ biến kẻ tấn công sử dụng là sử dụng form giả để truyền dữ liệu, kẻ tấn công dễ dàng thay đổi những hạn chế giới hạn phía client, khi form được submit tất cả dữ liệu sẽ truyền đến ứng dụng của bạn.Ví dụ:
Mã:
Street: City: State: Pick a state... Alabama Alaska Arizona Zip: Form trên giới hạn độ dài tối đa cho phép nhập và có thể dùng javascript để giới hạn khi người dùng nhập vào và khi form được submit thì tất cả dữ liệu form sẽ chuyển đến trang process.php để sử lý.người dùng có thể thể định nghĩa form ở nơi khác và URL của action chỉ đến file chúng ta xemví dụ:
Mã:
Street: City: State: Zip: Khi ấy, nếu form được submit thì dữ liệu vẫn được đưa đên file process.php như ví dụ trên mà không gặp bất kỳ giới hạn nào trong form.Chúng ta dễ dàng fix lỗi này bằng cách kiểm tra các yêu cầu sử lý từ đâu đến bằng giá trị $_SERVER[‘HTTP_REFERER’] xác nhận yêu cầu sử lý đúng trên site mình mới thực thi. Mặc dù có thể ngăn cản mọi dữ liệu xuất phát từ form của nơi khác nhưng nó không cần thiết phải từ chối tất cả dữ liệu từ nơi khác. Kiểm tra độ tin cậy các thông tin từ bên ngoài là cần thiết đảm bảo dữ liệu submit là phù hợp yêu cầu trong form and thậm chí dữ liệu từ form giả mạo không thể qua được bộ lọc.4.3.1.2. Tấn công Cross-Site Tấn công Cross-Site (XSS) là cách tấn công phổ biến và là cách tấn công dễ hiểu nhất. Tính đơn giản của kiểu tấn công và số lượng các ứng dụng dễ bị tổn thương bởi kiểu tấn công này nhiều đã lôi cuốn những kẻ có dã tâm. XSS khai thác sự tin tưởng người đùng và luôn cố gắng lấy trộm thông tin người dùng như : cookies and các thông tin cá nhân khác. Tất cả dữ liệu nhập vào ứng dụng. Ta xét một ví dụ form sau. Form có thể tồn tại trên một số các web site cộng đồng và có thể cho phép user khác nhận xét(comment). Sau khi các lời nhận xét được gửi thì tất cả các lời nhận xét được hiển thị vì vậy mọi thứ của các lời nhận xét đều được hiển thị:Ví dụ:
Mã:
Add a comment: Hình dung một số người có ác tâm gửi lời nhận xét với nội dung sau: document.location = ’’’’ + document.cookie; Bây giờ mọi người viếng thăm các thông tin đăng nhập được và cookies chuyển đến URL nó được truyền qua chuỗi struy vấn trên site.kẻ tấn công dễ dàng dùng $_GET[’cookies’] để lưu chúng để sau sử dụng.4.3.1.3. Tấn công bằng cách yêu cầu cross-site giả A cross-site request forgery (CSRF) là kiểu tấn công làm cho không biết HTTP yêu cầu từ đâu, thường nó yêu cầu quyền truy cập và sử dụng session của nạn nhân để truy cập. Yêu cầu HTTP sẩy ra khi nạn nhân dùng tài khoản của mình để mua hàng thay đổi hoặc xoá thông tin ngưòi dùng. Khi một XSS tấn công khai thác sự tin tưởng của ngưòi dùng vào ứng dụng, một yêu cầu được gải mạo ứng dụng được người sử dụng tin tường, một yêu cầu đuợc cho là hợp pháp được gửi đi thât khó có thể phát hiện ra có phải thực sự người sự dụng muốn thưc hiện yêu cầu đó. Trong khi đó yêu cầu được đưa ra ngoài ứng dụng bạn, thường sử dụng là các cuộc tấn công CSRF. Nó sẽ không ngăn ngừa ứng dụng nhận yêu cầu gải mạo. Vậy ứng dụng của bạn phải có khả năng phát hiện yêu cầu hợp lệ trong đó có chứa mã có hại hay khôngVí dụ: Chúng ta có 1 web site cho mọi người có thể đăng kí một account và họ có quyền xem các mục sách để mua . có thể giả thuyết rằng một kẻ có dã tâm đăng kí một acount và quá trình sử lý mua sách là trong suốt với site. Cách thức này được phát hiện ra 1 cách tình cờ:+ đăng nhập và mua hàng+ Chọn 1 cuốn sách để mua rồi bấm vào nút “buy” nó sẽ chuyển đên trang checkout.php+ Cô ấy nhìn thấy action check out là POST, nhưng các tham số checkout sẽ được bỏ vì chuỗi truy vấn(GET) làm việc + Khi đặt là checkout.php?isbn=0312863551&qty=1 thì thấy báo giao dịch thành công Với điều mộ kẻ có dã tâm dễ dàng mua hàng trên 1 site mà không mất đồng nào. rễ dàng 1 người sử dụng có thể sử dụng chèn một thẻ ảnh (img) vào vùng không được phép. nội dung của thẻ img như sau: Thậm chí image gắn ở site khác vẫn có thể tiếp tục tạo ra cái yêu cầu mua hàng trên site. Hầu hết mọi trường hợp yêu cầu thất bại bởi vì user phải đăng nhập mới mua được hàng. Sự tấn công nàylà sự tin tưởng của web site với người dùng. Giải pháp cho kiểu tấn công này thay thế POST bằng GET tấn công được là do checkout.php sử dụng $_REQUEST, mảng này sẽ truy cập và lấy isdn và qty. Chúng ta nên sử dụng POST để giảm thiểu rủi do về loại tấn công này. Nhưng nó không thể bảo vệ tất cả các yêu cầu đã được nguỵ tạo. Một sự tấn công phức tạp có thể tạo yêu cầu POST rễ ràng bằng GET. Trừ khi có một phương pháp ngăn chặn phương pháp mã thông báo(token) này bắt buộc sử dụng form của bạn. Mã thông báo tạo ra bằng cách sinh ngẫu nhiên một mã thông báo và lưu nó trong session khi user truy cập trang chứa form sẽ đặt nó vào trong form dưói 1 trường ẩn. Sẽ sử lý kiểm tra mã thông báo POST từ form với giá trị lưu trong session. Nếu đúng thì nó là yêu cầu hợp lệ nếu sai thì không sử lý và thay vào đó là thông báo lỗi .Ví dụ:<
Mã:
?php session_start(); $token = md5(uniqid(rand(), TRUE)); $_SESSION[’token’] = $token; ?> " /> sử lý khi form được submit: if (isset($_SESSION[’token’]) && isset($_POST[’token’]) && $_POST[’token’] == $_SESSION[’token’]){ // Token is valid, continue processing form data}4.3.2 Bảo mật Database Khi chúng ta truy cập CSDL và chấp nhận dữ liệu đầu vào bằng cách tạo ra các câu lệnh truy vấn, nó dễ dàng bị các kẻ gian lợi dụng tấn công SQl injection. SQL injection xuất hiện khi các kẻ tấn công muốn làm các “thử nghiệm” trên form để lấy các thông tin về CSDL. Nó thu thập các thông tin từ các thông báo lỗi SQL . Kẻ tấn công đính vào form một trường injecting SQL, phổ biến nó thường đính vào form đăng nhập
Mã:
Username: Password: đoạn mã sử lý đăng nhập dễ bị lợi dụng:$username = $_POST[’username’]; $password = md5($_POST[’password’]); $sql = "SELECT * FROM users WHERE username = ’{$username}’ AND password = ’{$password}’"; /* database connection and query code */ if (count($results) > 0) { // Successful login attempt} Khi kẻ tấn công nhập user là :username’ OR 1 = 1 -và mật khẩu để trống thì cấu trúc câu lệnh SQl là:SELECT * FROM users WHERE username = ’username’ OR 1 = 1 --’ AND password = ’d41d8cd98f00b204e9800998ecf8427e’ điều kiện 1=1 thì luôn đúng câu lệnh SQL bỏ qua tất cả những gì sau ‘--’ vì vậy câu lệnh SQl trên sẽ trả lại tất cả các bản ghi. Bằng cách này hacker dễ dàng đăng nhập vào hệ thống với tài khoản bất kỳ khi đã biết tên tài khoản, chúng ta tránh được lỗi này bằng cách lọc các kí tự escaping. Bằng cách lọc dữ liệu đầu vào và lọc escaping khi xuất ra chúng ta sẽ tránh được lỗi SQL injection chúng ta lọc escaping bằng nhóm hàm *_escape_string()
4.3.3 Bảo mật Session Có hai kiểu tấn công session phổ biến nhất đó là session cố định(session fixation) và cướp session ( session hijacking)Khi một người triệu gọi trang web lần đầu tiên ứng dụng sẽ gọi session_start() để tạo ra sesion cho user. PHP sẽ tự động sinh ngẫu nhiên một định danh khác nhau cho mỗi user. Và sau đó nó send tạo một trên cookies với tên mặc định là PHPSESSID bạn có thể thay đổi tên mặc định của nó bằng cách thay đổi nó trong php.ini hoặc dùng hàm session_name() . Từ lần viếng thăm sau nó sẽ định danh user bằng cookies. Tuy nhiên có thể gán session qua chuỗi truy vấn. Đây là cách dễ ràng để tấn công session fixation bởi vì kẻ tấn công có thể thay đổi giá trị PHPSESSID. Cách phổ biến là lưu trữ link trong ứng dụng của bạn nối thêm session id và sau dụ ngưòi dùng kích vàoClick here Trong khi truy cấp thường hay lưu thông tin đăng nhập trong session. Nếu user đăng nhập vào với cùng session id thì kẻ tấn công cũng có thể truy cập với session id đó vì vậy có thể truy cập vào thay đổi các thông tin account . Quan trọng hơn là nó sẽ tiến tới chiếm quyền điều khiển của những acount quản trị. Chúng ta có thể xuất tất cả các session id của tất cả các user bằng hàm session_regenerate_id()
Mã:
session_start(); // If the user login is successful, regenerate the session ID if (authenticate()) { session_regenerate_id();} Cách làm trên chỉ bảo vệ user bởi cách tấn công session fixed và dễ dàng đề nghị truy cập của các kẻ tấn công . Nó không giúp chống lại được các kiểu tấn công phổ biến khác như kiểu session hijacking. Đúng hơn là cái này là một cái chung mà thời hạn mô tả bởi bất kì cái gì đó có nghĩa bởi các kẻ tấn công kiếm được những session id của user hữu ích.Ví dụ: một user tin rằng khi đăng nhập thì session id được định nghĩa lại và có một session mới. cái gì sẽ sẩy ra nếu các kẻ tấn công mà phát hiện ID mới và cố gắng truy cập vào session của user ? Session ID để định danh các yêu cầu khác nhau của các user khác nhau. một yêu cầu đầư được trợ giúp đặc biệt và không thay đổi giữa các yêu cầu đầu khác nhau. nếu không chắc chắn(chiếm truờng hợp ít) user từ một trình duyệt có thể chuyển nó thành cái khác trong khi đang sử dụng cùng phiên làm việc. các yêu cầu đầu để xác định rõ kiểu tấn công session hijacking.Sau khi user đăng nhập lưu tác nhân user (User-Agent ) vào session:$_SESSION[’user_agent’] = $_SERVER[’HTTP_USER_AGENT’]; Và sau đó khi trang được load lần hai kiểm tra chắc chắn rằng User-Agent không được thay đổi. Nếu nó bị thay đổi lên cho đăng nhập lại
Mã:
if ($_SESSION[’user_agent’] != $_SERVER[’HTTP_USER_AGENT’]) { // Force user to log in again exit;
}
4.3.4 Bảo mật Filesystem PHP có khả năng truy cập trực tiếp hệ thống files và có thể thực hiện các lệnh shell, nó cung cấp cho các nhà phát triển sức mạnh lớn, nó thực sự nguy hiểm khi làm hỏng dữ liệu đầu cuối bằng các comand line. Một lần nữa dữ liệu lại phải lọc.4.3.4.1 Thực thi mã lệnh từ xa(remote Code Injection ) Khi khai báo chèn vào file bằng include hoặc requre chú ý cẩn thận khi sử dụng dữ liệu “hỏng” để tạo một sự khai báo bao hàm(include) động trên dữ liệu nhập từ client, bởi vì một lỗi có thể dễ dàng cho phép hacker có thể thực hiện các cuộc tấn công từ xa. Một cuộc tấn công từ xa xẩy ra khi một kẻ tấn công có thể thực hiện đoạn mã mà họ đã chọn trên ứng dụng của chúng ta. Điều đó giúp cho kẻ tấn công có thể tàn phá cả ứng dụng lẫn hệ thống. Ví dụ: rất nhiều ứng dụng cho phép tạo và sử dụng chuỗi truy vấn vào cấu trúc những mục của ứng dụng ví dụ : . Một ứng dụng có thể cấu trúc inclue đề chèn mã news vào ứng dụng:clude "{$_GET[’section’]}/data.inc.php"; khi sử dụng URL truy cập vào những mục news/data.inc.php . Tuy nhiên phải cân nhắc kỹ chuyện gì xẩy ra nếu các kẻ tấn công thay đổi chuỗi truy vấn có hại cho site: dữ liệu nguy hiểm sẽ đuợc include vào hệ thống kết quả của cách làm trên là include ""; attack.inc được inclue vào hệ thống và thực thi mã trong đó, các kẻ tấn công có thể làm bất kỳ điều gì mà họ muốn chỉ cẩn để nó trong attack.inc . when đó kẻ tấn công có thể chiếm tất cả quyền mà họ muốn.Ví dụ:
Mã:
$clean = array(); $sections = array(’home’, ’news’, ’photos’, ’blog’); if (in_array($_GET[’section’], $sections)) { $clean[’section’] = $_GET[’section’] }else { $clean[’section’] = ’home’}include "{clean[’section’]}/data.inc.php"; 4.3.4.2 Các lệnh ijnection. Một site cho phép include dữ liệu động vào file rất nguy hiểm, nó cho phép user thực thi các lệnh trên hệ thống. PHP cung cấp các các hàm như exec(), system() và passthru() giúp chúng ta có thể thực thi những lệnh trên hệ thống. Việc lọc whilelist giảm thiệu các câu lệnh có hại cho hệ thống.Php cung cấp hàm escapeshellcmd() and escapeshellarg() Đê lịa bỏ những cấu lệnh escape shell cho hệ thống.
4.4 Shared Hosting Có rất nhiều vấn đề nẩy sinh khi sử dụng host dùng chung, trước đây PHP giải quyết vấn đề này bằng chỉ thị safe_mode .Tuy nhiên nó sai khi cố gắng dùng nó để phân cấp tại mức PHP. Safe_mode không sẵn sàng ở PHP 6. Có 3 chỉ thị quan trong trong việc chia sẻ hosting: open_basedir disable_functions và disable_classes. Ba chỉ thị này không phụ thuộc vào safe_mode và chúng thể sẵn sàng trong tương laiOpen_basedir là chỉ thị giới hạn truy cập đến truy cập file trên cấu trúc cây thư mục. khi PHP cố gắng mở một file bằng open() hoặc include nếu tồn tại thì nó sẽ được chỉ rõ cây thư mục bằng open_basedir nếu không thì nó sẽ không mở file. Có thể khai báo trong php.ini hàm open_basedir cho từng cho từng host ảo. PHP chỉ cho phép mở file ở địa chỉ/home/user/www and /usr/local/lib/php (cái này được mặc định trong thư viện PEAR):
Mã:
DocumentRoot /home/user/www ServerName www.example.org php_admin_value open_basedir "/home/user/www/:/usr/local/lib/php/" Chỉ thị disable_functions và disable_classes tương tự nhau nó cho phép disable một hàm hoặc 1 lớp nào đó bất kỳ hàm nào và lớp nào trong danh sách này đều không có chức năng cho hệ thống.bạn có thể thay đổi thông số trong php.ini như sau:; Disable functions disable_functions = exec,passthru,shell_exec,system ; Disable classes disable_classes = DirectoryIterator,Directory4.5 Giao thức bảo mật phổ biến trong thương mại điện tử.
Secure Socket Layer (SSL) là gì?
SSL là giao thức đa mục đích được thiết kế để tạo ra các giao tiếp giữa hai chương trình ứng dụng trên một cổng định trước (socket 443) nhằm mã hoá toàn bộ thông tin đi/đến, mà ngày nay được sử dụng rộng rãi cho giao dịch điện tử như truyền số hiệu thẻ tín dụng, mật khẩu, số bí mật cá nhân (PIN) trên Internet. Giao thức SSL được hình thành và phát triển đầu tiên năm 1994 bởi nhóm nghiên cứu Netscape dẫn dắt bởi Elgammal và ngày nay đã trở thành chuẩn bảo mật thực hành trên mạng Internet. Phiên bản SSL hiện nay là 3.0 và vẫn đang tiếp tục được bổ sung và hoàn thiện. Tương tự như SSL, một giao thức khác có tên là PCT - Private Communication Technology được đề xướng bởi Microsoft hiện nay cũng được sử dụng rộng rãi trong các mạng máy tính chạy trên hệ điều hành Windows NT. Ngoài ra, một chuẩn của IETF (Internet Engineering Task Force) có tên là TLS (Transport Layer Security) dựa trên SSL cũng được hình thành và xuất bản dưới khuôn khổ nghiên cứu của IETF Internet Draft được tích hợp và hỗ trợ trong sản phẩm của Netscape.
Giao thức SSL làm việc như thế nào?
Điểm cơ bản của SSL được thiết kế độc lập với tầng ứng dụng để đảm bảo tính bí mật, an toàn và chống giả mạo luồng thông tin qua Internet giữa hai ứng dụng bất kỳ, thí dụ như webserver và các trình duyệt khách (browsers), do đó được sử dụng rộng rãi trong nhiều ứng dụng khác nhau trên môi trường Internet. Toàn bộ cơ chế hoạt động và hệ thống thuật toán mã hoá sử dụng trong SSL được phổ biến công khai, trừ khoá chia xẻ tạm thời (session key) được sinh ra tại thời điểm trao đổi giữa hai ứng dụng là tạo ngẫu nhiên và bí mật đối với người quan sát trên mạng máy tính. Ngoài ra, giao thức SSL còn đỏi hỏi ứng dụng chủ phải được chứng thực bởi một đối tượng lớp thứ ba (CA) thông qua giấy chứng thực điện tử (digital certificate) dựa trên mật mã công khai (thí dụ RSA). Sau đây ta xem xét một cách khái quát cơ chế hoạt động của SSL để phân tích cấp độ an toàn của nó và các khả năng áp dụng trong các ứng dụng nhạy cảm, đặc biệt là các ứng dụng về thương mại và thanh toán điện tử...
Giao thức SSL dựa trên hai nhóm con giao thức là giao thức “bắt tay” (handshake protocol) và giao thức “bản ghi” (record protocol). Giao thức bắt tay xác định các tham số giao dịch giữa hai đối tượng có nhu cầu trao đổi thông tin hoặc dữ liệu, còn giao thức bản ghi xác định khuôn dạng cho tiến hành mã hoá và truyền tin hai chiều giữa hai đối tượng đó. Khi hai ứng dụng máy tính, thí dụ giữa một trình duyệt web và máy chủ web, làm việc với nhau, máy chủ và máy khách sẽ trao đổi “lời chào” (hellos) dưới dạng các thông điệp cho nhau với xuất phát đầu tiên chủ động từ máy chủ, đồng thời xác định các chuẩn về thuật toán mã hoá và nén số liệu có thể được áp dụng giữa hai ứng dụng. Ngoài ra, các ứng dụng còn trao đổi “số nhận dạng/khoá theo phiên” (session ID, session key) duy nhất cho lần làm việc đó. Sau đó ứng dụng khách (trình duyệt) yêu cầu có chứng thực điện tử (digital certificate) xác thực của ứng dụng chủ (web server).
Chứng thực điện tử thường được xác nhận rộng rãi bởi một cơ quan trung gian (là CA -Certificate Authority) như RSA Data Sercurity hay VeriSign Inc., một dạng tổ chức độc lập, trung lập và có uy tín. Các tổ chức này cung cấp dịch vụ “xác nhận” số nhận dạng của một công ty và phát hành chứng chỉ duy nhất cho công ty đó như là bằng chứng nhận dạng (identity) cho các giao dịch trên mạng, ở đây là các máy chủ webserver.
Sau khi kiểm tra chứng chỉ điện tử của máy chủ (sử dụng thuật toán mật mã công khai, như RSA tại trình máy trạm), ứng dụng máy trạm sử dụng các thông tin trong chứng chỉ điện tử để mã hoá thông điệp gửi lại máy chủ mà chỉ có máy chủ đó có thể giải mã. Trên cơ sở đó, hai ứng dụng trao đổi khoá chính (master key) - khoá bí mật hay khoá đối xứng - để làm cơ sở cho việc mã hoá luồng thông tin/dữ liệu qua lại giữa hai ứng dụng chủ khách. Toàn bộ cấp độ bảo mật và an toàn của thông tin/dữ liệu phụ thuộc vào một số tham số: (i) số nhận dạng theo phiên làm việc ngẫu nhiên; (ii) cấp độ bảo mật của các thuật toán bảo mật áp dụng cho SSL; và (iii) độ dài của khoá chính (key length) sử dụng cho lược đồ mã hoá thông tin.
Các thuật toán mã hoá và xác thực của SSL được sử dụng bao gồm (phiên bản 3.0):
DES - chuẩn mã hoá dữ liệu (ra đời năm 1977), phát minh và sử dụng của chính phủ Mỹ
DSA - thuật toán chữ ký điện tử, chuẩn xác thực điện tử), phát minh và sử dụng của chính phủ Mỹ
KEA - thuật toán trao đổi khoá), phát minh và sử dụng của chính phủ Mỹ
MD5 - thuật toán tạo giá trị “băm” (message digest), phát minh bởi Rivest;
RC2, RC4 - mã hoá Rivest, phát triển bởi công ty RSA Data Security;
RSA - thuật toán khoá công khai, cho mã hoá va xác thực, phát triển bởi Rivest, Shamir và Adleman;
RSA key exchange - thuật toán trao đổi khoá cho SSL dựa trên thuật toán RSA;
SHA-1 - thuật toán hàm băm an toàn, phát triển và sử dụng bởi chính phủ Mỹ
SKIPJACK - thuật toán khoá đối xứng phân loại được thực hiện trong phần cứng Fortezza, sử dụng bởi chính phủ Mỹ
Triple-DES - mã hoá DES ba lần.
Cơ sở lý thuyết và cơ chế hoạt động của các thuật toán sử dụng về bảo mật bên trên hiện nay là phổ biến rộng rãi và công khai, trừ các giải pháp thực hiện trong ứng dụng thực hành vào trong các sản phẩm bảo mật (phần cứng, phần dẻo, phần mềm).
CHƯƠNG 5: XÂY DỰNG VÀ THIẾT KẾ WEBSITE GIỚI THIỆU VÀ BÁN THỰC PHẨM
5.1 Phân tích và thiết kế hệ thống
“Xây dựng website giới thiệu và bán hàng trên mạng internet”
Ở đây là website giới thiệu và bán thực phẩm trên mạng internet là đề tài mà trong đó chủ yếu là xử lý quá trình mua bán hàng hóa giữa cửa hàng với khách hàng đều là những người sử dụng internet.Chúng ta có thể hiểu bán hàng ở đây là bán hàng thật thông qua hàng ảo,khách hàng gián tiếp mua hàng.Vậy nhiệm vụ đề ra ở đây là làm thế nào đáp ứng đầy đủ nhu cầu cho khách hàng.
Hoạt động của cửa hàng ảo bao gồm hai hoạt động chính : hoạt động của khách hàng và hoạt động của người quản trị .
Hoạt động của khách hàng:
Một khách hàng khi tham quan cửa hàng, họ sẽ đặt vấn đề cửa hàng bán những gì, thông tin về mặt hàng được bán, giá cả và hình thức thanh toán.Do đó để đáp ứng những nhu cầu tối thiểu trên, cửa hàng ảo phải đảm bảo cung cấp những thông tin cần thiết, có giá trị và hơn thế nữa là dễ thao tác.Mặt hàng khi bán phải có hình ảnh, giá cả,nơi sản xuất và thông tin liên quan đến mặt hàng đó.
Khách hàng có thể vào cửa hàng ảo(website) để tìm kiếm các sản phẩm cần mua và đặt hàng với cửa hàng.khách hàng có thể tìm mặt hàng mà mình cần theo tên hàng.
Khách hàng là thành viên cần nhập tên đăng nhập và mật khẩu để đăng nhập hệ thống và mua hàng.
Nêu đây là lần đầu tiên khách hàng đến cửa hàng thì khách hàng cần đăng ký thành viên để mua hàng,trong đó khách hàng khai họ tên,thông tin địa chỉ…tên sử dụng và mật khẩu của khách hàng.
Khi khách hàng tiếp tục mua hàng, nhưng mặt hàng mới mà khách hàng lựa chọn sẽ được thêm vào giỏ mua hàng của khách hàng.
Khách hàng có thể cập nhật sản phẩm trong giỏ hàng khi muốn mua thêm sản phẩm cùng loại,hay có thể xóa sản phẩm trong giỏ hàng đi khi không muốn sản phẩm đó nữa.
Khi khách hàng đã sẵn sàng hoàn thành đơn hàng của mình thì các mặt hàng mà khách hàng hiện có trong giỏ mua hàng của mình sẽ chuyển vào đơn đặt hàng thực hiện đặt hàng với cửa hàng ,sau đó giỏ mua hàng sẽ rỗng.
Hoạt động của người quản trị:
Người quản trị ngoài việc nhận thông tin từ khách hàng còn phải đưa thông tin về các mặt hàng mình bán lên cửa hàng ảo(website).Hoạt động của người quản trị có thể phân ra những nhiệm vụ sau:
Hướng dẫn và giới thiệu mặt hàng:Khách hàng khi tham quan cửa hàng thường đặt câu hỏi :“Cửa hàng của bạn bán những gì, có những gì tôi cần hay không? ”. Phải nhanh chóng đưa khách hàng tới nơi có mặt hàng họ cần, đó là nhiệm vụ của nhà quản lý.Việc lưu trữ các thông tin về mặt hàng trong một cơ sở dữ liệu trực tuyến, cơ sở dữ liệu này chứa những thông tin về mặt hàng như : tên mặt hàng , loại mặt hàng, thông tin mô tả, hình ảnh, giá cả mặt hàng,…..
Quản lý mặt hàng : người quản lý có thể bổ sung, loại bỏ và cập nhật mặt hàng để phù hợp với tình hình hoạt động của cửa hàng cà nhu cầu thị hiếu của khách hàng……….
Cung cấp giỏ hàng cho khách hàng : Khách hàng sẽ cảm thấy thoải mái khi duyệt qua toàn bộ cửa hàng trực tuyến mà không bị gián đoạn ở bất kỳ đâu vì phải lo quyết định xem có mua một mặt hàng nào hay không, cho tới khi kết thúc việc mua hàng, có thể lựa chọn mặt hàng, thêm hoặc loại bỏ mặt hàng ra khỏi giỏ hàng cũng như ấn định số lượng cho mỗi mặt hàng.
Theo dõi khách hàng: Hàng của ai mua?là câu hỏi được đặt ra khi cùng một lúc nhiều khách hàng mua hàng trong cửa hàng ảo(website).
Nhận đơn đặt hàng: Sau khi khách hàng kết thúc giao dịch, đơn hàng sẽ được tổng hợp lại và gửi qua các bộ phận khác như : kế toán , kinh doanh…ngoài ra sau một thời gian nhất định, nhà quản lý có thể sử lý đơn đặt hàng mới và cũ nếu cần.
Bán hàng và xúc tiến khuyến mại: Có hàng trong kho là một chuyện và bày bán như thế nào mới là vấn đề. Ở đây chúng ta chỉ bày bán đơn giản , các mặt hàng sẽ được bày bán thông qua loại mặt hàng trên cửa hàng ảo(website). Việc ưu đãi khách hàng thường xuyên và đặt mua với số lượng nhiều là một việc cần thiết đồng thời các thông tin khuyến mại cũng kèm theo mặt hàng để khách hàng biết.
Quản lý và xử lý đơn đặt hàng:
+Quản lý các đơn hàng mà khách hàng đã gửi.
+ Xóa đơn hàng.
+ Thành lập hóa đơn cho khách hàng khi giao hàng….
5.1.2 Thiết kế hệ thống.
Biểu đồ chức năng :
Sơ đồ vật lý:
Các tiến trình:
Một số sơ đồ luồng dữ liệu :
Sơ đồ : DFD Mức 1- Quản lý đơn hàng.
Sơ đồ : DFD mức 1- Quản lý sản phẩm.
Sơ đồ : DFD mức 1 – Quản lý các trang nội dung
Sơ đồ : DFD Mức 1 –Quản lý thành viên.
Sơ đồ :DFD mức 1 – Quản lý banner quảng cáo.
5.2 Thiết kế cơ sở dữ liệu
Từ quá trình phân tích hệ thống và các sơ đồ luồng dữ liệu,sơ đồ các tiến trình thì ta có thể thiết kế các bảng dữ liệu quan hệ như sau:
Các file đính kèm theo tài liệu này:
- Xây dựng website giới thiệu và bán thực phẩm.doc