Ðăng nhập

View Full Version : Căn bản về bảo mật Web bạn nên biết


digi2936
08-10-2019, 01:57 PM
sở hữu rất nhiều lớp học lập trình web lý do để học về bảo mật web như:

Bạn lo âu về việc để lộ thông báo cá nhân trên mạng.
Bạn quan tâm đến tính bảo mật cho website hoặc vận dụng của mình.
Bạn là lập trình viên và đang đi xin việc, bạn muốn chuẩn bị sẵn cho trường hợp nhà tuyển dụng hỏi về các vấn đề bảo mật web.
... Và phổ quát lý do khác nữa.

Bài viết này sẽ giảng giải một vài vấn đề bảo mật web thông dụng đương nhiên thuật ngữ chuyên ngành nghề của nó.



2 định nghĩa then chốt trong bảo mật
- không 1 người nào sở hữu thể an toàn 100%.

- 1 lớp kiểm soát an ninh là ko đủ.



Cross-Origin Resource Sharing (CORS)
Bạn đã bao giờ gặp một thông báo lỗi dạng như này chưa?

nếu đã gặp phải lỗi này, bạn sẽ thử tậu cách lập trình web biện pháp trên Google. Và bạn sẽ thấy ai ấy chỉ dẫn cài 1 extension giúp cho lỗi này biến mất và trang web của bạn lại hoạt động thường nhật.

Nhưng liệu đây sở hữu phải phương pháp làm tốt?

CORS được sinh ra là để bảo kê bạn chứ ko phải để gây khó khăn cho bạn
Trước lúc giảng giải về CORS, chúng ta hãy cùng Phân tích lại về Cookies, đặc thù là Authentication Cookies. Authentication Cookies được dùng để thông báo cho server biết rằng bạn đã đăng nhập vào hệ thống, và chúng được tự động gửi kèm mỗi request lên server.

ví thử bạn đã đăng nhập vào Facebook, và họ sử dụng Authentication Cookies.

Sau đó bạn click vào 1 link bất kỳ trên mạng, tỉ dụ link video full 9 phút và nó sẽ redirect bạn về một website nào đó của hacker. Website này sẽ tự động chạy một đoạn code Javascript để thực hiện request lên facebook.com sở hữu cố nhiên authentication cookie của bạn!

Trong 1 thế giới không mang CORS, hacker có thể thực hiện các thao tác trên Facebook mang trương mục của bạn mà bạn ko phải hay biết. Tỉ dụ như đăng tin lên trên loại thời kì của bạn kèm theo link video full 9 phút, sau đó bạn bè của bạn click vào link trên và cũng thực hiện hành vi tương tự, ... Vòng lặp này cứ tiếp tục cho tới khi phần đông mạng phường hội facebook đều thấy xuất hiện link video full 9 phút 😆

Xem thêm =>> https://mindx.edu.vn/blog/post/hoc-lap-trinh-cho-tre-em

thực tại, có sự bảo kê của CORS, Facebook sẽ chỉ cho phép những request với Origin (đính kèm trong request header) là facebook lên server của họ. Nghĩa là chỉ với request thực hiện trong khoảng website facebook.com mới được bằng lòng. Hay kể cách khác, họ đã ngừng việc san sẻ tài nguyên giữa các tên miền khác nhau (cross-origin resource sharing).

Bạn cũng có thể tự hỏi:

- "Vậy giả dụ website của hacker cố tình đổi thay header origin lúc gửi request thì sao?". Đúng, họ có thể làm cho như vậy. Nhưng trình chuẩn y sẽ tự động bỏ qua và chỉ gửi lên origin đích thực (là tên miền của website thực hiện request).

- "Vậy nếu như request được thực hành từ phía server chứ không phải client?". Trong trường hợp này hacker sở hữu thể vượt qua được CORS nhưng họ lại không thể gửi kèm được authentication cookie bởi vì nó nằm ở phía client.

Content Security Policy (CSP)
Để hiểu về CSP (chính sách bảo mật nội dung), trước tiên chúng ta cần Phân tích về một lỗ hổng rất thông dụng trên web, đấy là XSS (cross-site scripting, ký hiệu X thay cho C để tránh lầm lẫn với CSS 😀). XSS là lúc kẻ xấu nhúng code Javascript vào trong code phía client của bạn.

Bạn với thể nghĩ rằng: "Nhúng code Javascript vào thì làm được gì? Thay đổi màu chữ trong khoảng đỏ sang xanh? ..."

ví thử một người nào ấy nhúng được code Javascript vào website mà bạn đang truy nã cập. Lúc ấy họ sở hữu thể:

trá hình bạn để thực hiện 1 HTTP request.
Nhúng một iframe trông như một phần website và đề xuất bạn nhập mật khẩu rồi gửi request tới server của hacker.
Chèn hoặc sửa một đường dẫn trên website gốc, dẫn tới một website giả mạo có giao diện y sì website gốc để thực hiện hành vi lường đảo (ví dụ bắt buộc đăng nhập, bắt buộc nhập thông tin account, ...)
... Và muôn ngàn khả năng khác.

CSP sẽ phấn đấu ngăn chặn điều này ngay trong khoảng đầu bằng cách thức giới hạn:

cái gì có thể được phép mở trong một iframe.
Style nào có thể được vận chuyển.
Request có thể được thực hiện ở đâu.
...
Vậy nó hoạt động như nào?
khi bạn bấm vào một đường link hoặc gõ địa chỉ website trên trình thông qua thì trình duyệt y sẽ thực hiện một GET request. Và server sẽ trả về HTML cố nhiên một vài HTTP headers. Nếu như bạn muốn biết mình nhận được header như nào thì hãy bật tab Network trong DevTools và truy nã cập thử một website. Bạn có thể sẽ thấy một response header như sau:

ấy là chính sách bảo mật nội dung của Facebook. Nhận định chi tiết hơn các directives (chỉ thị):

- default-src: hạn chế phần đông những CSP directive mà ko được liệt kê rõ ràng.

- script-src: dừng những script với thể được load.

- style-src: giới hạn các style sở hữu thể được load.

- connect-src: ngừng các URL nào sở hữu thể được load dùng script như fetch, XHR, ajax, ...

với phổ quát CSP directive khác nữa ngoài 4 loại ở trên. Trình phê duyệt sẽ đọc CSP header và vận dụng phần lớn các directive đấy cho mọi thứ trên trang HTML.
HTTPS hay HTTP Secure
cứng cáp bạn đã từng nghe nhắc tới HTTPS. Sở hữu thể bạn nghe nhắc rằng Chrome sẽ đánh dấu trang web của bạn là không an toàn (insecure) nếu như nó ko có HTTPS.

Về bản chất thì HTTPS hơi thuần tuý. HTTPS thì được mã hóa còn HTTP thì ko.

Vậy mẫu này thì mang liên quan gì giả dụ bạn ko gửi những dữ liệu nhạy cảm? Hãy cộng Nhận định thêm về một thuật ngữ khác: MITM (Man in the Middle).

nếu như bạn đang tiêu dùng Wi-Fi công cùng (không đặt mật khẩu) ở 1 quán cà phê, một ai đấy với thể thuận tiện bắt được request của bạn. Nếu dữ liệu của bạn ko được mã hóa, họ sở hữu thể đọc được khiến bất cứ thứ gì họ muốn. Họ sở hữu thể chỉnh sửa HTML, CSS hoặc Javascript trước khi trình thông qua của bạn nhận được dữ liệu. Tương tự như XSS ở trên, bạn có thể mường tưởng được hacker có thể khiến cho được các gì.

dùng HTTPS thì mọi dữ liệu truyền và nhận giữa máy tính của bạn và server đều được mã hóa khiến hacker không thể đọc hay chỉnh sửa tùy ý được.

Chuyện học tập & làm việc ở MindX