KiThuatLapTrinhWeb

18
Giới thiệu công nghệ lập trình web ASP.NET, Công nghệ XML, công nghệ lập trình Webservice trên môi trường .NET 1. Giới thiệu công nghệ ASP.NET ASP.Net không phải là một ngôn ngữ lập trình cụ thể, có thể gọi đó là một cách thức lập trình web trên môi trường .NET. ASP.NET là sự kết hợp của HTML và một ngôn ngữ lập trình server cụ thể nào đó. Trên môi trường .NET hỗ trợ rất nhiều ngôn ngữ khác nhau, nhưng phổ biến nhất vẫn là C# và VB.NET. File ASP.NET có đuôi mở rộng là .aspx. Ứng với mỗi file .aspx sẽ có 1 file .CS( hoặc .vb,…). Code Behind: Điểm khác biệt lớn nhất của ASP.NET so với ASP chính là thuật ngữ “Code Behind”. Trong các ngôn ngữ lập trình web khác như PHP, JSP, ASP thì mã HTML và mã code được viết chung trong cùng một file, điều đó gây khó khăn rất lớn cho người lập trình trong việc quản lý mã nguồn. Với ASP.NET thì trang mã HTML và mã xử lý tại server được tách riêng biệt ra thành 2 file khác nhau. File .aspx chính là file để design giao diện, bố trí các control trên trang web, còn trang .cs ( hoặc .vb,….) chính là nơi viết code xử lí tại server. Với cách tách riêng biệt như vậy giúp ích rất nhiều cho lập trình viên trong việc quản lý mã nguồn. Giúp lập trình viên thao tác trên file HTML mà không ảnh hưởng đến logic của trang. Lập trình hướng đối tượng, Web control, Validate control, user control, custom control:

Transcript of KiThuatLapTrinhWeb

Page 1: KiThuatLapTrinhWeb

Giới thiệu công nghệ lập trình web ASP.NET, Công nghệ XML, công nghệ lập trình Webservice trên môi trường .NET

1. Giới thiệu công nghệ ASP.NET

ASP.Net không phải là một ngôn ngữ lập trình cụ thể, có thể gọi đó là một cách thức lập trình web trên môi trường .NET. ASP.NET là sự kết hợp của HTML và một ngôn ngữ lập trình server cụ thể nào đó. Trên môi trường .NET hỗ trợ rất nhiều ngôn ngữ khác nhau, nhưng phổ biến nhất vẫn là C# và VB.NET. File ASP.NET có đuôi mở rộng là .aspx. Ứng với mỗi file .aspx sẽ có 1 file .CS( hoặc .vb,…).

Code Behind:

Điểm khác biệt lớn nhất của ASP.NET so với ASP chính là thuật ngữ “Code Behind”. Trong các ngôn ngữ lập trình web khác như PHP, JSP, ASP thì mã HTML và mã code được viết chung trong cùng một file, điều đó gây khó khăn rất lớn cho người lập trình trong việc quản lý mã nguồn. Với ASP.NET thì trang mã HTML và mã xử lý tại server được tách riêng biệt ra thành 2 file khác nhau. File .aspx chính là file để design giao diện, bố trí các control trên trang web, còn trang .cs ( hoặc .vb,….) chính là nơi viết code xử lí tại server. Với cách tách riêng biệt như vậy giúp ích rất nhiều cho lập trình viên trong việc quản lý mã nguồn. Giúp lập trình viên thao tác trên file HTML mà không ảnh hưởng đến logic của trang.

Lập trình hướng đối tượng, Web control, Validate control, user control, custom control:

Ngôn ngữ server trên ASP.NET là C#, VB.NET. Đó là 2 ngôn ngữ lập trình hướng đối tượng phổ biến nhất hiện nay( cùng với ngôn ngữ Java). Với việc áp dụng lập trình hướng đối tượng bạn sẽ dễ dàng tái sử dụng mã nguồn trong project của mình. Nếu bạn đã quen với việc lập trình window Application trên môi trường .NET thì bạn chuyển qua lập trình ASP.NET sẽ dễ dàng hơn so với ASP hay PHP. Code xử lí sẽ không khác nhiều so với lập trình trên môi trường window Application. Hơn nữa ASP.NET hỗ trợ rất nhiều control cho người dùng, có thể nói là mọi thứ bạn cần đều có sẵn.

User control : là control do người dùng tự định nghĩa có đuôi mở rộng là .ascx. User control là kết hợp của những control có sẵn tạo thành 1 control mới

Custom control: là control kế thừa từ một control có sẵn và phát triển thêm một số chức năng mới nào đó theo ý của người lập trình. Để có thể tạo được 1 custom control người lập trình cần

Page 2: KiThuatLapTrinhWeb

phải hiểu rõ lập trình hướng đối tượng và cách thức xây dựng sự kiện cho control đó ( khái niệm delegate)

Validate Control: là những control ASP.NET hỗ trợ để kiểm tra tính hợp lệ của dữ liệu tại client

Webpart: Webpart là công nghệ .NET hỗ trợ sẵn cho lập trình viên có thể tạo ra những trang web cho chép người dùng cuối cá nhân hóa giao diện của mình, tương tự như trang http://www.google.com/ig.

Master page: có đuôi mở rộng là .master. Mục đích của Master Page là thay thế cho kĩ thuật frame trên ngôn ngữ ASP, do đó trong ASP.NET khái niệm frame rất ít khi được sử dụng. Master page là nơi lập trình viên sẽ bố trí các control chung , có tính chất cố định , không thay đổi qua các trang khác nhau thông thường là header, footer, menu,… Các trang khác ( đuôi .aspx) lập trình viên phải chỉ rõ Master Page là trang nào, lúc đó trang .aspx này sẽ kế thừa tất cả giao diện và code xử lý của trang Master page này. Master Page giúp lập trình viên quản lý mã nguồn tốt hơn và nhất là sẽ dễ dàng thay đổi khi yêu cầu về giao diện thay đổi. Lúc này lập trình viên chỉ cần thay đổi trong trang Master Page, các trang khác kế thừa từ trang Master page này sẽ tự thay đổi theo.

Lập trình Cơ sở dữ liệu với ADO.NET

ADO.NET là một phần của .NET Framework, nó được xem là “bộ thư viện lớp” chịu trách nhiệm xử lý dữ liệu trong ngôn ngữ MS.NET. ADO.NET được thiết kế với dạng dữ liệu “ngắt kết nối”, nghĩa là chúng ta có thể lấy cả một cấu trúc phức tạp của dữ liệu từ database, sau đó ngắt kết nối với database rồi mới thực hiện các thao tác cần thiết. Đây là một sự tiến bộ về mặt thiết kế bởi vì thiết kế ADO trước đây luôn cần duy trì một kết nối trong quá trình thao tác dữ liệuTrước ADO.NET, Microsoft đã có ADO là một bộ thư viện để xử lý các thao tác liên quan đến dữ liệu. ADO có tính linh hoạt, dễ sử dụng và được tích hợp trong các ngôn ngữ như Visual Basic, ASP 3.0.

Có thể coi ADO.NET là một thế hệ tiếp theo của ADO. ADO.NET kế thừa tất cả những ưu điểm của ADO, đồng thời với ý tưởng thiết kế hoàn toàn mới ADO.NET có một diện mạo khác hẳn so với tiền thân của nó. Một vài đặc điểm nổi bật của ADO.NET mà ADO không có như sau:

- ADO.NET được thiết kế hoàn toàn dựa vào XML - ADO.NET được thiết kế hoàn toàn hướng đối tượng.

Page 3: KiThuatLapTrinhWeb

Các đối tượng chính trong ADO.NET Connection: Đối tượng quản lý đóng /mở kết nối tới

Database.Có 2 dạng Connection tuỳ theo nguồn dữ liệu là gì (OleDb hay SQL Server) đó là OleDbConnection và SqlConnection

Command : Đối tượng thực hiện các câu lệnh tương tác truy vấn, rút trích dữ liệu từ database khi đã thiết lập kết nối tới dữ liệu và trả về kết quả. Tương tự như Connection, Command cũng có 2 dạng tuỳ theo nguồn dữ liệu là gì (OleDb hay SQL Server) đó là OleDbCommand và SqlCommand

DataReader : Đối tượng xử lý đọc dữ liệu, được thiết kế phù hợp cho các ứng dụng web. Chỉ Xử lý 1 dòng dữ liệu tại một thời điểm. Phù hợp với ứng dụng web vì xử lý nhanh, nhẹ không chiếm bộ nhớ. Cũng có 2 dạng tùy theo dữ liệu nguồn : OleDbDataReader và SqlDataReader. Dữ liệu của đối tượng được tạo ra khi đối tượng Command thực hiện câu lệnh ExecuteReader()

DataAdapter : Đây là đối tượng rất quan trọng của ADO.NET, nó là cầu nối của database và dataset (dataset là đối tượng ngắt kết nối), bởi vì đối tượng “ngắt kết nối” dataset không thể liên lạc trực tiếp với database nên nó cần một đối tượng trung gian lấy dữ liệu từ database cho nó. Và đó chính là DataAdapter. Vì DataAdpater khi thao tác với Database vẫn phải duy trì kết nối nên nó được liệt kê vào dạng “kết nối”, nhưng bản chất là phục vụ cho việc “ngắt kết nối

2. Giới thiệu về XML

XML là viết tắt từ Extensible Markup Language (ngôn ngữ đánh dấu mở

rộng). Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa

các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet

XML là tập con của SGML - Standard Generalized Markup Language.

Các tiêu chuẩn của XML qui định bởi W3C - World Wide Web

Consortium.

Tập tin XML là tập tin văn bản thuần túy. Do đó XML không phụ thuộc

vào môi trường nào.

Page 4: KiThuatLapTrinhWeb

XML là 1 ngôn ngữ đánh dấu giống như HTML, nhưng XML và HTML

khác nhau về cách dùng và mục đích sử dụng. HTML là cho biết phải hiển

thị thông tin lên web browser như thế nào, còn XML dùng để mô tả dữ

liệu( cũng có thể xem XML là 1 dạng Cơ sở dữ liệu).

XML không định nghĩa các thẻ, người dùng có trách nhiệm định nghĩa các

thẻ dùng trong XML. Ngược lại, HTML không cho phép người sử dụng

định nghĩa thẻ, mà phải tuân thủ một tập thẻ đã được định nghĩa trước.

Một tài liệu XML well-formed là một tài liệu XML thích hợp cho parser

chế biến. Tức là XML tuân thủ các luật lệ về Tag, Element, Attribute ,

value .v.v.. chứa bên trong để parser có thể nhận diện và phân biệt mọi

thứ. Một tài liệu XML well-formed cần phải thỏa mãn các điều kiện sau:

Phải có một nút gốc (root) duy nhất, gọi là Document Element,

nó chứa tất cả các Elements khác trong tài liệu.

Mỗi opening Tag phải có một closing Tag giống như nó.

Tags trong XML thì case sensitive, tức là opening Tag và closing

Tag phải được đánh vần y như nhau, chữ hoa hay chữ thường.

Mỗi Child Element phải nằm trọn bên trong Element cha của nó.

Attribute value trong XML phải được gói giữa một cặp ngoặc

kép hay một cặp apostrophe

Một tài liệu XML được coi là valid nếu nó well-form và cách bố trí sắp

xếp các thẻ trong nó phải phù hợp với phần đặc tả DTD. DTD là viết tắt

của từ Document Type Definetion. DTD chỉ rõ những loại thẻ đánh dấu

nào được sử dụng trong tài liệu XML và sự sắp xếp hợp lệ của những thẻ

này. Các nhà phát triển dùng DTD để chắc chắn rằng họ không tạo một

cấu trúc XML không hợp lệ. DTD định nghĩa một cấu trúc tài liệu với một

danh sách những element hợp lệ. DTD có thể khai báo bên trong tài liệu

XML hoặc là khai báo thành một tập tin bên ngoài tài liệu XML. Ví dụ

Page 5: KiThuatLapTrinhWeb

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>]><note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body></note>

Trên đây là 1 tài liệu XML valid. Thứ tự và cách bố trí các thẻ tuân theo phần mô tả DTD. Nếu bạn thay đổi thứ tự các tab hoặc bỏ đi hoặc thêm vào tab không có trong DTD thì tài liệu này không được xem là valid.

XML Declaration: là dòng đầu tiên của mỗi file XML. Dùng để cung cấp

thông tin cho parser.

Ví dụ: <?xml version='1.0' encoding='UTF-16' standalone='yes'?>

Quy ước:

Bắt đầu bằng “<?xml”, kết thúc bằng “?>”.

Bắt buộc phải có thuộc tính version.

Tùy chọn đối với 2 thuộc tính encoding, standalone.

Nếu sử dụng cả 3 thuộc tính thì phải theo thứ tự như ở ví dụ trên.

Phiên bản đặc tả của XML parser phải giống với phiên bản đặc tả

của tài liệu XML

Mô hình DOM trong XML: DOM là viết tắt của từ Document Object

Model. DOM được dùng để đọc và trình bày nội dung của file XML.

DOM sẽ đọc nội dung của file XML và tổ chức thành 1 cây, DOM giúp

truy xuất nhanh và trực tiếp đến 1 nút. Do DOM sẽ load toàn bộ nội dung

Page 6: KiThuatLapTrinhWeb

file XML vào bộ nhớ nên sẽ rất tốn bộ nhớ nếu file XML lớn, nhưng bù

lại tốc độ truy xuất sẽ nhanh hơn so với dung XML Reader.

DOM xem tài liệu XML như 1 cây có cấu trúc. Element, Attribute, Text

được xem là Node

Ví dụ:

<?xml version="1.0" ><name> <first>Nguyen</first> <middle>Van</middle> <last>Ty</last></name>

Khi chuyển qua mô hình DOM , sẽ được cây như sau:

Node cao nhất gọi là root. Mỗi node ( trừ root ) đều có 1 node cha

Một node sẽ có nhiều node con. Node lá là node không có node con

Siblings là những node anh em cùng cấp với nhau( cùng node cha)

Duyệt các node trong file XML

middle

Name

first

last

Nguyen

Van

Ty

Page 7: KiThuatLapTrinhWeb

3. Giới thiệu về kĩ thuật lập trình Webservice trên môi trường .NET

Author

Title

Publisher

PublishDate

parentNode

lastChild

nextSibling

previousSibling

firstChild

Book

Page 8: KiThuatLapTrinhWeb

SOAP là giao thức dựa trên XML dùng để truyền và nhận dữ liệu trên web(SOAP là một giao thức dùng để truy cập Webservice)Độc lập nềnĐộc lập ngôn ngữDựa trên XMLMột thông điệp SOAP là một tài liệu XML chuẩn chứa các phần tử sau đây:-An Envelope element that identifies the XML document as a SOAP message-Header chứa thông tin header-Body chứa mô tả về các tham số để gọi webservice và dữ liệu trả về từ webserviceEnvelope là root của SOAP Message. Dùng để xác định tài liệu XML này là 1 SOAP MessageWebservice

Page 9: KiThuatLapTrinhWeb

Web service Provider xay dựng và publish webservice lên cho “Web service Registry”

Web Service Client sẽ lên “Web service Register” tìm những web service mà mình cần

Web service sẽ cung cấp tài liệu mô tả Webservice cho Webservice ClientWeb service Client sẽ gọi chạy Web service

WSDL viết tắt của từ Web Service Description Language( ngôn ngữ mô tả dịch vụ Web) là một tài liệu XML mô tả về web service , cách gọi và cách nhận dữ liệu trả về từ Web Service

Page 10: KiThuatLapTrinhWeb

Web Service cóthể đượcmô tảnhư hàm được triển khai thôngqua Web và có thể được gọi từ các ứng dụng thông thường hoặcmột web service khác.

Tương tự như Dynamic Link Library (nhưng)Không phụ thuộc nền (platform independent) .Truy xuất đơn giản (chỉ cần URL) .Tập hợp các hàm liên kết động

Page 11: KiThuatLapTrinhWeb

SOAP

Là giao thức được Web Service sử dụng để truyền dữ liệu qua Internet SOAP = XML + một giao thức có thể hoạt động trên Internet (HTTP, FTP,

SMTP)

Làm thế nào để Client tìm kiếm các Web Service trên Internet ?

Sercurity trong lập trình Web bằng ASP.NET

Bảo mật luôn là một vấn đề quan trọng trong quá trình phát triển phần mềm. Đặc biệt là đối với các ứng dụng web. Web được truy cập từ mọi nơi nên dễ dàng trở thành mục tiêu của các cuộc tấn công. Khi nói đến vấn đề bảo mật nhiều người vẫn nghĩ rằng việc bảo đảm an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tấn công từ các tin tặc chỉ đơn thuần tập trung vào các vấn đề như chọn hệ điều hành, hệ quản trị cơ sở dữ liệu, webserver sẽ chạy ứng dụng và đó chính là nhiệm vụ của các chuyên gia bảo mật nhưng trên thực tế hầu hết các ứng dụng web bị tấn công là do lỗi của các lập

Page 12: KiThuatLapTrinhWeb

trình viên phát triển hệ thống đó. Kiểu tấn công như vậy gọi là SQL Injection. Theo số liệu ước tính của hãng bảo mật Phần Lan F-Secure thì số trang web bị hack bằng SQL Injection trong năm 2008 là 2 – 3 triệu. Một con số đáng lo ngại về tình hình bảo mật website.

SQL Injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp (không được người phát triển lường trước) bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web. Hậu quả của nó rất tai hại vì cho phép vì nó cho phép những kẻ tấn công có thể thực hiện các thao tácxóa, hiệu chỉnh thông tin trong Cơ sở dữ liệu, thậm chí kẻ tấn công có thể chiếm được toàn quyền trên Cơ sở dữ liệu của ứng dụng. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase

1. SQL Injection là gì?:

SQL Injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp (không được người phát triển lường trước) bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web. Hậu quả của nó rất tai hại vì cho phép vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh thông tin trong Cơ sở dữ liệu, thậm chí kẻ tấn công có thể chiếm được toàn quyền trên Cơ sở dữ liệu của ứng dụng. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase

2. Các dạng tấn công bằng SQL Injection

Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập (authorization bypass), sử dụng câu lện SELECT, sử dụng câu lệnh INSERT, sử dụng các stored-procedures

a. Dạng tấn công vượt qua kiểm tra đăng nhập:

Trang đăng nhập là trang yêu cầu người dùng nhập vào user name và password, Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra user name và password có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp.lại

Ví dụ có form đăng nhập như sau:

<form id="form1" runat="server"> Username:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><br> Password:<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox><br> <asp:Button ID="btnLogin" runat="server" Text="Login" />

</form>

Page 13: KiThuatLapTrinhWeb

Giả sử người dùng nhập vào Username là: user và pasword là 1 thì ta sẽ truy vấn cơ sở dữ liệu như sau Select * from User where UserName=user and Password =1 Nếu người dùng nhập đúng User name và Password thì câu truy vấn trên sẽ trả về tập record thông tin người dùng thỏa mãn yêu cầu, ngược lại sẽ không có record nào trả về. Lập trình viên sẽ căn cứ vào số lượng record trả về để quyết định xem người dùng này hợp lệ hay không? Nếu không có User name và password hợp lệ làm cách nào để hacker vượt qua trang login này? Rất đơn giản , chỉ cần nhập vào ô User name là: 1 or 1=1 , ô password là 1 . Lúc đó câu truy vấn sẽ như sau:

Select * from User where UserName=1 or 1=1 and Password =1Đây là câu truy vấn hợp lệ, người dùng sẽ đăng nhập được vào hệ thống.

b. Dạng tấn công sử dụng câu lệnh Selectc. sdfdsd. sdfsd

3. Cách phòng tránh:

4. sdf

5. Payment Gateway

-Giá các mặt hàng phải có 2 chữ số lẻ<form method="post" action= "https://www.paypal.com/cgi-bin/webscr"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="business" value="[email protected]"> <input type="hidden" name="item_name" value="Item name"> <input type="hidden" name="item_number" value="1234"> <input type="hidden" name="amount" value="19.95"> <input type="hidden" name="no_shipping" value="1"> <input type="submit" value="Buy Now"></form>

Neu dung sandbox thi action =’ https://www.sandbox.paypal.com/cgi-bin/webscr’;

Paramater DescriptionCmd Thuộc tính bắt buộc, phai có giá

trị là _xclickBusiness Tham số bắt buộc, email của người

bánitem_nameitem_number Đây là tên của sản phẩm đó sẽ được

hiển thị cho người sử dụngno_shipping 0: Nhắc nhắc khách hàng nhập địa

chỉ người hàng1:khách hàng không nhập địa chỉ

Page 14: KiThuatLapTrinhWeb

gửi hàng2: Khách hàng phải nhập địa chỉ gửi hàng

Return Đây la trang trở về sau khi thanh toan thành công. Nêu không nhập gì thì sau khi thanh toàn người dùng sẽ đứng trên Paypal

IPN là một công nghệ của Paypal cho phép tự động thanh toán

6. Giới thiệu ứng dụng:

Trong phạm vi của luận văn này, chúng em sẽ xây dựng 1 website ( gọi là WebSaas) có các chức năng như sau:

- Cho phép 1 cá nhân hay 1 tổ chức nào đó ( gọi tắt là người dùng) đăng kí trên hệ thống WebSaas. Sau khi đăng kí xong người dùng đó sẽ có 1 website riêng cho mình , link của website này tuân theo quy tắc sau: http://www.WebSaas/username/Default.aspx

-

7. asdsd8.