Chào các bạn nằm trong chuỗi các bài viết về “bảo mật ứng dụng Web” (Web Security) mà tôi trình bày tại đây. Tôi sẽ cố gắng đi từ những khái niệm cơ bản về Web (Web Security 101) đến những bài phân tích chuyên sâu và cả những kinh nghiệm làm việc của riêng cá nhân tôi từ trước tới nay.
Những kiến thức cơ bản này cũng sẽ là tham chiếu tốt cho các bài viết chuyên sâu, các tin tức cập nhật về lỗ hổng trên SecurityDaily. Hi vọng các bạn sẽ nắm vứng được các kiến thức này để có thể dễ dàng tiếp cận với các vấn đề khó hơn.
Khái niệm website & Web Security
World Wide Web (www), gọi tắt là web, là một không gian thông tin toàn cầu mà mọi người có thể truy nhập (gửi và nhận thông tin) qua các máy tính nối với mạng Internet. Thuật ngữ này thường được hiểu nhầm là từ đồng nghĩa với chính thuật ngữ Internet. Nhưng web thực ra chỉ là một trong các dịch vụ chạy trên Internet.
Các tài liệu trên web được lưu trữ trong một hệ thống siêu văn bản (hypertext) đặt tại các máy chủ nối mạng Internet. Người dùng phải sử dụng một chương trình được gọi là trình duyệt web để xem siêu văn bản. Chương trình này sẽ nhận thông tin tại ô địa chỉ URL do người sử dụng yêu cầu, sau đó trình duyệt sẽ tự động gửi thông tin đến máy chủ (web server) và hiển thị trên màn hình máy tính của người xem. Người dùng có thể theo các liên kết siêu văn bản (hyperlink) trên mỗi trang web để nối với các tài liệu khác hoặc gửi thông tin phản hồi lên máy chủ trong một quá trình tương tác. Hoạt động truy tìm thông tin theo các siêu liên kết thường được gọi là duyệt web.
Quá trình này cho phép người dùng có thể lướt các trang web để lấy thông tin. Tuy nhiên độ chính xác và chứng thực của thông tin tùy thuộc vào uy tín của các website đưa ra thông tin đó.
Hoạt động của website
Thông qua trình duyệt, người dùng cuối sẽ kết nối đến máy chủ phục vụ web bằng địa chỉ URL. Tại đây, máy chủ phục vụ web sẽ xử lý kết nối và gửi yêu cầu đến ứng dụng web. Tùy theo yêu cầu, ứng dụng web sẽ truy vấn đến cơ sở dữ liệu và nhận kết quả trả về, sau đó sẽ gửi phản hồi về máy chủ phục vụ web. Cuối cùng máy chủ phục vụ web sẽ gửi dữ liệu về trình duyệt dưới dạng siêu văn bản và người dùng cuối sẽ nhận thông tin hiển thị trên trình duyệt.
Trình duyệt web
Trình duyệt web (web browser) là một phần mềm ứng dụng cho phép người sử dụng xem và tương tác với các văn bản, hình ảnh, đoạn phim, nhạc, trò chơi và các thông tin khác ở trên một trang web của một địa chỉ web trên mạng toàn cầu hoặc mạng nội bộ. Trình duyệt web cho phép người sử dụng truy cập các thông tin trên các trang web một cách nhanh chóng và dễ dàng, nó đọc định dạng HTML, CSS, XML,… để hiển thị, do vậy một trang web có thể hiển thị khác nhau trên các trình duyệt khác nhau.
Một số trình duyệt web hiện nay bao gồm Internet Explorer, Mozilla Firefox, Safari, Google Chrome, Opera,…
Địa chỉ URL
Địa chỉ URL (Uniform Resource Locator) được dùng để tham chiếu tới tài nguyên trên Internet. URL mang lại khả năng siêu liên kết cho các trang mạng, các tài nguyên khác nhau.
Một URL gồm các thành phần sau:
- Giao thức (ví dụ: http, ftp) nhưng cũng có thể là một cái tên khác (ví dụ: news, mailto).
- Tên miền (ví dụ: example.com.vn, abc.vn).
- Cổng (ví dụ: 80, 8080), tuy nhiên thành phần này có thế không bắt buộc.
- Đường dẫn tuyệt đối trên máy phục vụ của tài nguyên (ví dụ: thumuc/trang).
Giao thức HTTP và HTTPS
HTTP (Hypertext Transfer Protocol) là giao thức thuộc lớp ứng dụng trong mô hình tham chiếu OSI. Hoạt động thông thường ở port 80 và là giao thức hướng kết nối.
GET /page/index.php HTTP/1.1
- Host: securitydaily.net
- User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
- Accept: text/html,application/xhtml+xml, application/xml;q=0.9,*/*;q=0.8
- Accept-Language: en-us,en;q=0.5
- Accept-Encoding: gzip, deflate
- Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
- Proxy-Connection: keep-alive
Phương thức: GET
Tên miền: securitydaily.net
Đường dẫn: /page/index.php
Phiên bản: HTTP/1.1
Các phương thức hoạt động của HTTP:
- GET: Phương thức lấy một đối tượng hoặc tài nguyên nào đó trên Server.
- POST: Phương thức mà Client sử dụng để gửi thông tin đến các Server.
- PUT: Phương thức dùng để Client upload dữ liệu lên Server.
- DELETE: Phương thức giúp Client xoá các đối tượng, tài nguyên từ các Server.
- HEAD: Phương thức xác minh rằng một đối tượng có tồn tại hay không.
- TRACE: Phương thức được sử dụng để gọi từ xa một lớp ứng dụng trở lại.
HTTPS (HTTP over SSL/TLS) là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS cho phép trao đổi thông tin một cách bảo mật trên Internet. Các kết nối HTTPS thường được sử dụng cho các giao dịch thanh toán trên Web và cho các giao dịch nhạy cảm trong các hệ thống thông tin, khi dữ liệu cần phải được bảo vệ an toàn.
Khi một HTTPS được thiết lập nó sẽ giúp bảo mật thông tin truyền giữa hai máy tính. Vậy, cứ thông tin nào cần bảo mật trên nền web thì có thể sử dụng nó. Nhưng đi kèm với quá trình bảo mật có nghĩa là hệ thống phải xử lý nhiều hơn.
Tên miền
Mục đích chính của tên miền là để cung cấp một hình thức đại diện, hay nói cách khác, dùng những tên dễ nhận biết, thay cho những tài nguyên Internet mà đa số được đánh số bằng địa chỉ IP rất khó nhớ. Việc dịch từ tên miền sang địa chỉ IP và ngược lại do hệ thống DNS trên toàn cầu thực hiện.
Tên miền có chiều dài tối đa 67 ký tự và chỉ bao gồm các ký tự chữ cái thông thường và các ký tự số.
Tên miền gồm hai dạng là tên miền Quốc gia và tên miền Quốc tế.
- Tên miền Quốc gia quy định theo quốc gia của bạn, ví dụ: Việt Nam là .vn; Nhật Bản là .jp; Anh là .uk; Mỹ là .us ….
- Tên miền Quốc tế: được dùng khắp trên thế giới như: .com; .net; .org; .edu ;…
Ý nghĩa một số tên miền mở rộng thông dụng:
- .com: Dành cho các công ty thương mại.
- .net: Dành cho các công ty về Network hay cung cấp dịch vụ mạng.
- .org: Dành cho các tổ chức, nhóm.
- .gov: Dành cho các tổ chức chính phủ.
- .edu: Dành cho các tổ chức giáo dục, trường học.
- .biz: Dành cho các công ty thương mại trực tuyến.
Web Server
Web Server là máy chủ cài đặt các chương trình phục vụ các ứng dụng web. Web Server có khả năng tiếp nhận yêu cầu từ các trình duyệt web và gửi phản hồi đến máy khách những trang web thông qua môi trường mạng Internet qua giao thức HTTP hoặc các giao thức khác.
Một số Web Server thông dụng hiện nay:
Web Application là nơi các kịch bản hay mã nguồn phát triển ra ứng dụng web được thực thi. Lớp này sẽ biên dịch các mã nguồn tương ứng và thực hiện các truy vấn đến cơ sở dữ liệu dựa vào mã nguồn ứng dụng.
Trong giai đoạn khởi đầu của website, có rất nhiều ngôn ngữ lập trình được sử dụng như: JSP, ASP, PHP, ASP.NET… Nhưng hiện tại có hai ngôn ngữ được dùng phổ biến là PHP và ASP.NET.
Database Server
Database Server (cơ sở dữ liệu) là máy chủ lưu trữ tất cả các dữ liệu liên quan đến website. Bất kỳ người sử dụng nào trên mạng máy tính, tại các thiết bị đầu cuối, về nguyên tắc có quyền truy nhập khai thác toàn bộ hay một phần dữ liệu theo quyền hạn hay tương tác mà không phụ thuộc vào vị trí địa lý. Một số hệ cơ sở dữ liệu được sử dụng hiện nay như: MS SQL Server, Oracle, MySQL, Postgres…