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

Những dòng code giết người – Đạo đức và cái tâm của developer

Thuở đi học, chúng ta từng được học môn “Đạo đức nghề nghiệp“. Môn này cũng khá là nhàm chán, mình chỉ nhớ mang máng nội dung là lập trình viên không được lừa đảo, gây hại cho khách hàng v…v gì gì đó.

Xét cho cùng, đạo đức vô cùng quan trọng với những ngành liên quan trực tiếp tới mạng sống con người như ngành y, nên lúc nào ta cũng nghe than phiền về y đức. Đạo đức trong ngành lập trình liệu có quan trọng vậy không?

Câu hỏi sẽ được trả lời ở cuối bài viết nhé!

Continue reading Những dòng code giết người – Đạo đức và cái tâm của developer

Series Phản Phác Quy Chân – Tránh over-engineering

Over-engineering có thể tạm hiểu là “làm phức tạp hóa vấn đề”, một lỗi mà các bạn lập trình viên vừa đi làm hay gặp phải. Bài viết này sẽ làm rõ sai lầm này và đưa ra một số lời khuyên cho các bạn.

Ngày xửa ngày xưa

Xin mở đầu bài viết bằng một câu chuyện nhỏ nhỏ về bạn H. Thuở mới vào trường Đại Học, H được học Java để viết Hello World. Đây là cảnh giới đầu tiên của code học, không biết chiêu thức, chỉ chú tâm viết code cho chạy được.

1

Continue reading Series Phản Phác Quy Chân – Tránh over-engineering

Phần mềm cũng giống bánh mì và … xôi

Một buổi sáng nọ hồi còn ở Việt Nam, mình lỡ dậy hơi… sớm nên mới lò dò ra ngoài tìm chỗ ăn sáng. Trước nhà mình có hai xe bánh mì khá lâu đời, khách lúc nào cũng đông. Cạnh đấy là quán xôi lá chuối nho nhỏ, mỗi lần đi ngang qua lại nghe mùi lá chuối thơm nức mũi.

Gặm tạm ổ bánh mì cho bớt đói lòng, nhìn chị bán bánh mì, bé bán xôi ngoài ngõ, bỗng dưng mình lại nghĩ tới coder, tới phần mềm. Đó chính là lý do bài viết này ra đời. Tên bài viết lấy cảm hứng từ tác phẩm “Đi đâu cũng nhớ Sài gòn và em” của Anh Khang.

Bia lot _ Di dau cung nho SG va em _ 16.4 Final

Continue reading Phần mềm cũng giống bánh mì và … xôi

Lozi.vn đã “vô ý” để lộ dữ liệu 2 triệu người dùng như thế nào

Trong quá trình viết series Bảo mật nhập môn, mình vẫn hay đi nghịch dạo, tìm lỗi bảo mật dạo theo tinh thần “code dạo” của blog. Lẽ tất nhiên, đã tìm lỗi thì phải tìm các trang to to, nhiều người dùng một tí, chứ trang nho nhỏ thì ai quan tâm.

Là developer, mình không đủ giỏi về mạng hay hạ tầng để có thể tấn công server hay DDOS gì gì đó. Vì vậy, mình quyết định chỉ kiểm tra web và app, hai thứ mình rành nhất. Việt Nam nói là làm, mình bắt đầu truy cập website của app của 1 số ông lớn như tiki, lazada, foody….

screen-shot-2016-11-25-at-11-46-14-pm

Việc dò lỗi cũng giống như câu cá vậy, đôi khi câu được cá bự, đôi khi câu cả buổi không được con nào. Kì này, mình câu được một con cá nho nhỏ mà… nguy hiểm của lozi.vn.

Continue reading Lozi.vn đã “vô ý” để lộ dữ liệu 2 triệu người dùng như thế nào

Series Chuyện bên Khựa: Lần đầu làm “chuyện ấy” ở Thẩm Quyến

Hôm trước mình vừa tham dự China High-tech Fair ở Thâm Quyến. Đây là một hội chợ công nghệ cao, được tổ chức một lần mỗi năm, quy tụ các công ty công nghệ cao từ khắp Trung Quốc về tụ hội. Ở hội chợ này, mình có được tiếp xúc với một số công nghệ thú vị.

Tất nhiên là không quên phần các bạn đọc thân thương, mình cũng có chụp ảnh và quay phim chúng lại. Mình chỉa sẻ với bà con để mọi người thấy công nghệ của các bạn Khựa hiện đại cỡ nào.

Bài viết bao gồm khá nhiều hình ảnh và clip. Mỗi clip chỉ khoảng 5-10s thôi nên các bạn đừng bỏ lỡ nhé.

Continue reading Series Chuyện bên Khựa: Lần đầu làm “chuyện ấy” ở Thẩm Quyế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

Bạn muốn code giỏi? Thử luyện tập và “chiến đấu” với bọn nước ngoài xem nào!

Bạn là sinh viên, muốn rèn luyện khả năng code của bản thân nhưng không biết làm thế nào?

Bạn nghĩ mình code giỏi hơn bạn bè, muốn tìm một nơi để “thi đấu” và “thể hiện trình độ”?

Bạn là dân đi làm, muốn mài giũa kĩ năng code để có thể cạnh tranh với “lớp trẻ”?

Bạn sắp có một cuộc phỏng vấn quan trọng, muốn ôn lại những dạng đề thi hay gặp?

Bạn có khả năng lập trình, muốn được lọt vào mắt xanh của các nhà tuyển dụng lớn như Google, Facebook?

Bài viết này sẽ giới thiệu cách để bạn đạt được những điều nói trên. Kéo xuống để đọc tiếp nhé!

Continue reading Bạn muốn code giỏi? Thử luyện tập và “chiến đấu” với bọn nước ngoài xem nào!

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

Review sách: The Clean Coder – Trở thành coder chuyên nghiệp và “có tâm”

Mấy tuần trước, khi đi lang thang trên dạy nhau học, mình có thấy anh Đạt, founder daynhauhoc dành khá nhiều lời khen ngợi cho cuốn sách này.

screen-shot-2016-11-08-at-9-19-31-pm

Tò mò nên mình tìm về đọc thử. Quả thật sách không làm mình thất vọng! Có nhiều đoạn tác giả nói đúng đến mức không thể đúng hơn, hoặc đưa ra những lời dạy bảo vô cùng chí lí.

Do vậy, mình viết bài này, vừa review sách, vừa tóm tắt những điều tâm đắc mà mình rút ra được từ cuốn sách.

Continue reading Review sách: The Clean Coder – Trở thành coder chuyên nghiệp và “có tâm”

Lập trình viên giỏi không phải chỉ biết code