Tag Archives: series bảo mật nhập môn

Series Bảo Mật Nhập Môn – Quản lý người dùng – Tưởng dễ ăn mà không đơn giản

Website được tạo ra là để phục vụ người dùng. Có người sử dụng thì website và doanh nghiệp mới có thu nhập. Một trong những việc rắc rối nhất chính là quản lý và bảo mật thông tin người dùng.

Trong bài này, mình chia sẻ những điều cần lưu ý khi thực hiện tính năng này. Khá nhiều khê và phức tạp đấy, các bạn chịu khó đọc kĩ nhé!

Úi giời! Đăng kí đăng nhập có gì khó?

Không như bạn tưởng tượng, việc đăng kí/đăng nhập và quản lý người dùng thật ra không hề đơn giản. Nó có thể trở nên khá loằng ngoằng với những tính năng sau:

  • Cho phép người dùng đăng kí, đăng nhập bằng email
  • Phân quyền người dùng
  • Tích hợp với Gmail, Facebook
  • Tích hợp với hệ thống người dùng có sẵn trong doanh nghiệp
  • Reset mật khẩu khi người dùng quên
  • Block account khi người dùng nhập sai pass nhiều lần
  • Bảo mật cho API với app di động
  • Bảo mật 2 lớp (Two factor authentication) với các account quan trọng
  • Quản lý: Thêm bớt xoá sửa người dùng

screen-shot-2016-11-08-at-4-40-45-pm

Khi tính năng này hoạt động ổn định, không ai khen nó lấy một câu. Tuy nhiên, chỉ cần nó gặp phải chút vấn đề, cam đoan bạn sẽ hứng chịu vô số cơn thịnh nộ từ khách hàng.

Continue reading Series Bảo Mật Nhập Môn – Quản lý người dùng – Tưởng dễ ăn mà không đơn giản

Series Bảo Mật Nhập Môn – CSRF – Những cú lừa ngoạn mục

Trong Tam Quốc, các bậc quân sư tài năng có tài điều binh khiển tưởng, ngồi trong trướng bồng quyết thắng cách đó hàng ngàn dặm.

Trong Tu Chân, các cao thủ có chiêu “Cách Không Thủ Vật” điều khiển đồ vật từ xa, hoặc “Ngự Kiếm Phi Hành”, dùng chân khí để điều động phi kiếm hay pháp bảo.

Ngày nay, hacker cũng có “chiêu thức” tương tự gọi là CRSF. Hacker có thể ngồi tại website A mà dụ dỗ người dùng tấn công site B và site C khác.

Bài viết này sẽ giải thích cách hacker tấn công, đồng thời hướng dẫn cách phòng chống cho các bạn lập trình viên nhé.

Continue reading Series Bảo Mật Nhập Môn – CSRF – Những cú lừa ngoạn mục

Series Bảo Mật Nhập Môn – Insecure Direct Object References – Giấu đầu lòi đuôi

Kì này, mình sẽ giới thiệu một lỗ hổng bảo mật khá “lạ” mang cái tên dài loằng ngoằng khó đọc: Insecure Direct Object References.

Lỗi gì mà tên dài rứa??

Lỗi này “lạ” ở chỗ nó nằm trong top 4 OWASP nhưng lại có rất ít tài liệu về nó. Nó cũng không nổi tiếng như XSS hay CSRF hay SQL Injection (Dù rank OWASP của nó cao hơn XSS hay CSRF nhiều).

Bản thân mình trước đây cũng chưa hề nghe báo chí hay tin tức gì nhắc tới lỗi này. Có thể là do chưa có vụ án nổi tiếng nào liên quan đến nó, hoặc do lỗi này có nhiều biến thể phức tạp chăng?

Nguyên nhân chính gây ra lỗ hổng này là sự bất cẩn của developer hoặc sysadmin (Gặp lỗi này là phải lôi thằng dev ra chém trước, sau đó chém tester).

Lỗ hổng này xảy ra khi chương trình cho phép người dùng truy cập tài nguyên (dữ liệu, file, thư mục, database) một cách bất hợp pháp, thông qua dữ liệu do người dùng cung cấp. Để dễ hiểu hơn, hãy đọc ví dụ phía dưới nhé.

Continue reading Series Bảo Mật Nhập Môn – Insecure Direct Object References – Giấu đầu lòi đuôi

Series Bảo Mật Nhập Môn – SQL Injection – Lỗ hổng bảo mật thần thánh

Kì này, các bạn sẽ được tìm hiểu thực hư về lỗ hổng bảo mật SQL Injection “thần thánh”, một trong những lỗ hổng bảo mật phổ biến và nguy hiểm nhất mọi thời đại.

Tại sao SQL Injection lại “thần thánh”?

Những lý do sau đã tạo nên tên tuổi lừng lẫy của SQL Injection:

  • Cực kỳ nguy hiểm – Có thể gây ra những thiệt hại khổng lồ. Với SQL Injection, hacker có thể truy cập một phần hoặc toàn bộ dữ liệu trong hệ thống.
  • Rất phổ biến và dễ thực hiện – Lỗ hổng này rất nổi tiếng, từ developer đến hacker gần như ai cũng biết. Ngoài ra, còn có 1 số tool tấn công SQL Injection cho dân “ngoại đạo”, những người không biết gì về lập trình.
  • Rất nhiều ông lớn từng bị dính – Sony, Microsoft UK. Mọi vụ lùm xùm liên quan tới “lộ dữ liệu người dùng” ít nhiều đều dính dáng tới SQL Injection.

Dễ tấn công, phổ biến, gây ra hậu quả nghiêm trọng, đó là lý dó Inject (Không chỉ SQL mà OS và LDAP) nằm chễm chễ ở vị trí đầu bảng trong top 10 lỗ hỗng bảo mật của OWASP. Tất nhiên là XSS, CSRF, và không mã hoá dữ liệu cũng nằm trong list này nốt.

sql-injection2

Continue reading Series Bảo Mật Nhập Môn – SQL Injection – Lỗ hổng bảo mật thần thánh

Series Bảo Mật Nhập Môn – Ẩn giấu thông tin hệ thống – Tránh con mắt người đời và kẻ xấu

Trong bài viết hôm nay, mình sẽ giới thiệu một phương pháp bảo mật vô cùng đơn giản, hiệu quả nhưng lại được ít người biết và áp dụng. Đó là phương pháp: Giấu thông tin hệ thống.

Thông tin hệ thống là gì?

Có thể tạm hiểu thông tin hệ thống là những thông tin về cấu tạo và hoạt động của hệ thống đó.

Continue reading Series Bảo Mật Nhập Môn – Ẩn giấu thông tin hệ thống – Tránh con mắt người đời và kẻ xấu

Series Bảo Mật Nhập Môn – Lưu trữ cookie – Tưởng không hại ai ngờ hại không tưởng

Cookie là một khái niệm hết sức cơ bản mà ta được học khi mới lập trình web. Tuy nhiên, nếu sử dụng không đúng cách, nó sẽ thành “mồi ngon” cho vô số hacker.

Bài viết này sẽ đề cập đến những cách hacker mà có thể lợi dụng cookie để chiếm quyền người dùng, tấn công hệ thống, cùng với phương pháp sử dụng cookie đúng cách để ngăn chặn những lỗ hổng này nhé.

Continue reading Series Bảo Mật Nhập Môn – Lưu trữ cookie – Tưởng không hại ai ngờ hại không tưởng

Series Bảo Mật Nhập Môn – Lỗ hổng bảo mật XSS nguy hiểm đến mức nào?

Giới thiệu về XSS

XSS (Cross Site Scripting) là một lỗi bảo mật cho phép hacker nhúng mã độc (javascript) vào một trang web khác. Hacker có thể lợi dụng mã độc này để deface trang web, cài keylog, chiếm quyền điều khiển của người dùng, dụ dỗ người dùng tải virus về máy. Các bạn có thể xem thêm demo trong vụ hack Lotte Cinema trước đây.

Đây là một trong những lỗi bảo mật thường gặp nhất trên các trang Web. Các hệ thống từ lớn đến nhỏ như Facebook, Twitter, một số forum Việt Nam, … đều từng dính phải lỗi này. Do mức độ phổ biến và độ nguy hiểm của nó, XSS luôn được vinh dự được nằm trong top 10 lỗi bảo mật nghiêm trọng nhất trên OWASP (Open Web Application Security Project).

screenshot_25

Để tóm tắt, xin trích dẫn vài câu của thánh bảo mật Juno_okyo, người vừa hack 3 triệu tài khoản của server X nào đó.

"Ờ thì nghe cũng có vẻ nguy hiểm đấy, nhưng sao tôi thấy ông hay viết về XSS thế? Rảnh quá hả!?"

À... một lỗi vừa phổ biến, nằm top 10 OWASP, lại vừa nguy hiểm, có thể kết hợp tốt với các lỗi khác. Nhưng dễ tìm, dễ fix, đã thế còn được tính bug bounty nữa.

Continue reading Series Bảo Mật Nhập Môn – Lỗ hổng bảo mật XSS nguy hiểm đến mức nào?

Series Bảo Mật Nhập Môn – Giao thức HTTP “bảo mật” đến mức nào?

Sau một khoảng thời gian vật vã thì mình cũng hoàn thành bài đầu tiên trong series Bảo Mật Nhập Môn. Bài viết này sẽ bàn về sự “bảo mật” của giao thức HTTP.

Website của Lazada và Ngân hàng ACB sẽ bị lôi ra làm ví dụ. Vì bài viết khá dài nên các bạn cứ từ từ đọc nhé.

Ôn lại về HTTP

HTTP là một giao thức dùng để truyền nhận dữ liệu (Xem thêm ở đây). Hiện tại, phần lớn dữ liệu trên Internet đều được truyền thông qua giao thức HTTP. Các ứng dụng Web hoặc Mobile cũng gọi Restful API thông qua giao thức HTTP.

Tuy nhiên, nhược điểm của HTTP là dữ liệu được truyền dưới dạng plain text, không hề được mã hoá hay bảo mật. Điều này dẫn đến việc hacker có thể dễ dàng nghe lén, chôm chỉa và chỉnh sửa dữ liệu. Người ta gọi kiểu tấn công này là Man-in-the-middle attack, viết tắt là MITM.

Continue reading Series Bảo Mật Nhập Môn – Giao thức HTTP “bảo mật” đến mức nào?

Series Bảo Mật Nhập Môn – Bảo mật cơ bản cho developer

Giới thiệu

Bảo mật là một vấn đề rất tốn kém và phức tạp. Gần như hệ thống nào cũng có lỗ hổng (cả phần mềm lẫn phần cứng), các hacker có thể thông qua các lỗ hổng này để tấn công hệ thống.

Việc đảm bảo hệ thống bảo mật là trách nhiệm của rất nhiều bên: Sys admin, network, manager và developer. Do mình không chuyên về bảo mật nên mình không rành về việc config hệ thống mạng, setup tường lửa v…v, do đó mình sẽ không chém gió lung tung về mảng này. Thay vào đó, mình sẽ cùng các bạn tiếp cận khía cạnh bảo mật dưới góc nhìn của một developer.

Internet Security System

Những kiến thức trong series này rất cơ bản, dễ học, nhưng chúng sẽ vô cùng hữu ích, giúp bạn tránh phải những sai lầm bảo mật “ngớ ngẩn, cơ bản” khi code. Dù cho bạn code C hay C++, Java C# hay PHP, bạn cũng sẽ học được vài điều bổ ích qua series này.

Continue reading Series Bảo Mật Nhập Môn – Bảo mật cơ bản cho developer