Vừa hoàn thành 1 project là fix security cho một website nhánh của 1 tập đoàn khá hoành tráng ở Việt Nam và cũng được 1 công ty cũng có chút tiếng tăm trong lĩnh vực làm web ở HCM thực hiện. Vì fix theo kiểu Whitebox (có source để kiểm tra), có rất nhiều điều mình quan sát thấy từ source của họ và thiết nghĩ nên chia sẽ 1 chút kinh nghiệm cho những ai đã, đang và sẽ tìm cho mình 1 công ty làm web để phục vụ cho hoạt động kinh doanh của mình.
Không cứ công ty làm web hoành tráng thì web sẽ tốt
Điều này xưa nay chẳng bao giờ sai, chẳng thế mà có biết bao nhiêu website thuộc hàng thú dữ bị tấn công đấy thôi. Mình cũng định nghĩa thế nào là 1 website tốt. Trên phương diện programmer, một website tốt đối với mình phải hội đủ 3 yếu tố: tính an toàn, tính dễ dàng bảo trì và tính dễ dàng mở rộng. Còn phục vụ hoạt động kinh doanh là điều tất yếu, không có liệt kê vô đâylàm gì.
“Họa hổ họa bì nan họa cốt”
Điều này là đúng, xem giao diện chẳng đánh giá được gì cả các bạn à. Cái chính yếu là hệ thống code có đầy đủ 3 tính năng như mình nói hay không. Còn giao diện chỉ là thứ yếu, nên đừng bao giờ nhìn vào giao diện của 1 website mà đánh giá.
“Hãy cho tôi xem code của anh, tôi sẽ nói web anh như thế nào”
Nếu muốn đánh giá một hệ thống code có tốt hay không, đơn giản cứ lấy đống source mà bạn được công ty làm web bàn giao cho mình, kiểm tra đầu tiên là hỏi xem nó được viết theo framework nào, vì framework cũng có đủ thứ loại framework, tốt có, xấu có, nhanh có, chậm có. Sau đó kiểm tra bố cục của source xem thư mục gốc có như 1 đống rác. Thế nào là đống rác? Đó là 1 hệ thống source mà thư mục gốc tràn gian đại hải là file. Và theo quan điểm của mình, Joomla là 1 đống rác.
Tiếp theo, bạn thử open 1 file source nào lớn lớn (~30KB) để xem thử, nếu thấy HTML và PHP lẫn lộn thì bạn biết rằng tương lai website của bạn sẽ khá mù mịt. Ngoài ra, nếu thấy đống code có dạng “canh trái” ^^ có nghĩa là tương lai cũng cực kỳ đen tối. Thế nào là canh trái? đơn giản, dân trong nghề gọi là “code chay” đụng đâu code đó, không quan tâm sau này sẽ xảy ra chiện gì, cứ đáp ứng nhu cầu là thỏa mãn, không chú ý trình bày như indent tab, tách hàm, tách html. Ngoài ra, cần kiểm tra xem hệ thống code có phải theo dạng OOP-lập trình hướng đối tượng hay không, tức là các chức năng có chia class riêng biệt, rõ ràng.
Tất cả những điều này sẽ ảnh hưởng tới tính bảo trì và mở rộng cho website của bạn. Vì theo kinh nghiệm, website dạng này muốn mở rộng chỉ có 1 cách: Tìm 1 công ty khác làm lại website cho chắc.
“Đâm lao thì phải theo lao”
Còn về security thì sao, bạn đã giao trứng cho người ta giữ rồi, nếu theo framework có sẵn thì cũng hay, nhưng hãy cẩn thận với hiệu ứng Domino, open source mà, nếu ở đâu đó công bố lỗi bảo mật thì bạn cũng khó thoát được tai họa nếu website bạn theo framework đó và đang hoạt động tốt và là đích nhắm của nhiều người khác.
Ngoài dạng open source, các công ty thường sẽ có sẵn framework cho riêng mình, điều này mình cũng rất khuyến khích vì giúp đảm bảo 1 phần sự an toàn, tuy nhiên cũng phải coi trình độ và kinh nghiệm của lập trình viên mới đánh giá được vì có thể bạn đã “giao trứng cho ác” mà không hề hay biết.
“Đừng tham lam!”
Nhiều khi có nhiều chức năng chẳng ăn nhập gì tới hoạt động kinh doanh của bạn, gặp trường hợp như thế bạn hãy cứ dũng cảm cắt bỏ những chức năng dạng này. Vì nhiều dịch vụ thì sẽ có nhiều chỗ để kẻ khác khai thác để làm hại website của bạn mà thôi. Khi đặt hàng website hãy nghĩ tới “vừa đủ xài”. Ngoài ra, hạn chế các dịch vụ không cần thiết sẽ giúp cải thiện tốc độ truy cập tới website của bạn.
Trên đây là một số lời khuyên cho những ai đã, đang và sẽ sở hữu 1 website do ai đó thực hiện để giúp cho website của mình đảm bảo 1 số yếu tố cần thiết cho hoạt động của website.
Bài viết rất bổ ích, nhưng mình chưa hiểu câu “Họa hổ họa bì nan họa cốt” lắm, mong được giải thích ^^
Hi hi, cũng đơn giản lắm bạn. Làm một website hoành tráng thì nhìn giao diện nó hoành tráng chưa hẳn cái hệ thống source hoành tráng, biết đâu cái source như đống rác thì cũng không có giá trị gì nhiều.
hi hi ,
“Hãy cho tôi xem code của anh, tôi sẽ nói web anh như thế nào” dường như ko phù hợp cho lắm nhỉ! liệu 1 ứng dụng có 1 khối lượng code hơi bị nhiều, bạn xem nổi không nhỉ ? mà ko ai đồng ý để guest xem mã nguồn mình rùi đánh giá, cái đó ai làm cũng được mà :), vấn đề là level và sự tin tưởng của người dev và người view code thế nào .
Hi, không phải vấn đề nhiều code hay ít code, vài trăm dòng hay vài trăm ngàn dòng code không thành vấn đề. Ăn thua là kiến trúc của code mới đánh giá. Cái này thì không thể xem thường, cái tầm của kiến trúc sư trưởng chính là cái này, và đánh giá theo tiêu chí của mình là đánh giá theo hướng của 1 kiến trúc sư hệ thống thông tin. Cảm ơn bạn đã ghé blog.Mong được học hỏi thêm từ bạn.
hihi, vậy bạn dựa trên tiêu chí gì mà đánh giá 1 cái architect của 1 app là tốt hay chưa tốt!
Cái đó tùy thuộc vào trình độ và kinh nghiệm của người giám định :). Đối với mình thì mình có đề cập ở trên đó: Security, Maintenance và Scalability.
:), thì cũng như mình nói ở trên đó, trình độ và kinh nghiệm dĩ nhiên là rất quan trọng. Hi, chúng ta nhìn nhận vấn đề trên 2 khía cạnh khác nhau, bạn đúng trên quan điểm technical, mình nhìn theo khía cạnh business và cách làm việc của những partners 🙂
Mình cũng là 1 technical leader của cty , nhưng định hướng của mình lâu dài ko phải là code .
Rất mong được trao đổi và thảo luận với bạn qua yahoo: dinhthuong02@yahoo.com
Hi, nếu đứng trên quan điểm business thì khỏi phải bàn cải roài, khách hàng người ta chỉ cần thấy cái giao diện và xài đúng chức năng là người ta mãn nguyện rồi. Rõ ràng 3 tiêu chí của mình không có áp dụng trên tiêu chí business rồi, chỉ có thời gian sẽ nói cho khách hàng đó biết là sản phẩm họ đã bỏ tiền ra như thế nào thôi, và lúc đó việc business sẽ bắt đầu bị ảnh hưởng á. Chính vì có 1 khách hàng và 1 công ty làm web như thế, nên mình mới có ý định viết bài này đó. Khách hàng là 1 tập đoàn toàn cầu, và 1 nhánh của nó ở Việt Nam là nhờ 1 công ty web ở Việt Nam viết 1 site cho nó.
Vì nó bị security, mình được trung tâm an ninh mạng Athena giao cho trọng trách “Whitebox” security, nên mình mới tá hỏa khi thấy source code của nó, y như một lập trình viên PHP amatuer với kinh nghiệm 6 tháng viết ra, quá phẫn nộ vì thái độ xem thường khách hàng kiểu này nên mình viết để 1 số doanh nghiệp khi đi mua “trang web” phải cẩn thận một xíu thôi. Rất vui được trao đổi với anh.
Hi, mình hiểu và đồng ý với bạn về điều này. Chính vì quan điểm làm nhanh cho xong rùi lấy $ nên rất nhiều cty phần mềm VN nói 1 đường làm 1 nẻo :P. Có lẽ chất lượng nhất chính là cái slide họ trình bày để bid dự án. Truong hợp như bạn mình cũng từng gặp nhiều và cũng vô tình bị vạ lây luôn keke.
Cũng có thể có 1 trường hợp mà mình thấy hay diễn ra: 1 cty rất to và giao nhiệm vụ cho 1 người nào đó làm website cho cty với 1 lượng kinh phí với cũng hơi bị to :d , nhưng người đó lại kiếm 1 client be bé, chất lượng được đảm bảo trên slide bid dự án thôi :d, để có giá rẻ, giao diện ok tí là mấy sếp nghiệm thu liền, hehe mấy manager thì biết gì về SEO.XSS, SQL Injection,… nên nó xảy ra như bạn nói. keke, thành thật sory nếu comment của mình đụng chạm đến ai đọc nó :p
Anh yên tâm, chắc không đụng chạm tới mấy bác đó đâu. Mấy bác đó lo kiếm $ quá, thời gian đâu mà đọc blog, nhiều khi họ cũng chẳng biết blog là gì í chứ. Cảm ơn anh đã chia sẽ một số thông tin thú vị.
hihi, comment ở đây 0 tiện lắm để nói nhiều. Nếu bạn có time, add nick yahoo mình discuss nhiều hơn nha. bạn bè học hỏi nhau thôi chứ k có ý chê bai hay phản bác bài viết của bạn. Mỗi người 1 quan điểm và 1 góc nhìn, nếu có thể tổng hợp lại mình sẽ hiểu toàn diện hơn vấn đề.
Nick yahoo: dinhthuong02@yahoo.com
Lâu lâu ghé vô blog Tuấn học hỏi, bài này rất hay, bác dinhthuong02 có chia sẻ gì thì chia sẻ ở đây luôn, lo gì mấy bác kia 🙂
“Hãy cho tôi xem code của anh, tôi sẽ nói web anh như thế nào”
Rất dí dỏm và chính xác. Vì code làm nên hiệu quả của nội dung và hình thức. Ví dụ, cũng làm một việc nhưng có code chạy rất nhanh và hiệu quả, trong khi code khác cũng cho kết quả nhưng chiếm tài nguyên hơn, thời gian hơn.
Phải nói bài viết của Tuấn rất hay. Không biết Tuấn tốt nghiệp KHTN năm nào nhỉ, vì mình cũng vừa tốt nghiệp KHTN chuyên ngành CNPM vào tháng 10/09 vừa rồi. Rất mong sẽ có một đồng môn cùng chung chí hướng.
Cái bài này hay thật, và rất chính xác. Có rất nhiều công ty làm web ở VN hô hào dùng kỹ thuật hiện đại này nọ, nào là web2.0, security, … mà đụng vào mới biết code chay còn hơn cả người mới học lập trình web.
Câu “họa hổ họa bì nan họa cốt” rất chính xác dành cho những ai đã là nạn nhân của những công ty đó, còn chưa phải là nạn nhân có thể dùng câu “treo đầu dê bán thịt chó”. Cái giao diện không nói lên điều gì ngoài chuyện “ôi! trông cũng đẹp mắt đó nhỉ”, phần code mà code chay thì hệ thống còn tệ hơn nữa. Cùng lắm thỏa mãn thị giác chứ không thỏa mãn nhu cầu được.
Chút kinh nghiệm mong được chi sẽ và hồi đáp.
Giao lưu mọi người yêu thích PHP – Web App – Mọi Programer chân chính (không dùng Copy – Paste). Ai muốn kết bạn cứ add nick tmquang6805@yahoo.com nha. Rất hân hạnh
Có thể là chiến hữu. Tại hạ khóa 2004 chuyên ngành mạng máy tính – viễn thông.
hihi. Mình thuộc khóa 05. Vậy chỉ trên lệch nhau 1 năm mà Tuấn pro ghê.:).Học về mạng máy tính nhưng Tuấn lại đi theo con đường bên CNPM tụi này nhỉ, đặc biệt nhảy qua luôn bên kinh tế. Chia sẽ với mình ít kinh nghiệm được ko, sao lại chọn kinh tế là ngành thứ 2 vậy :-/
Hi hi, mình cũng thích nghiên cứu kinh doanh để để dành khoảng 5,10 năm nữa mắt mờ tay mỏi, không còn sung sức để đi theo lập trình thì có đường mà còn kiếm ăn nữa chứ 😀
Cám ơn bài viết của bạn, rất bổ ích.
Mình rất tôn trọng việc này, nhất là tính bảo trì, sự sạch sẽ trong coding, tốc độ và tính an toàn.
Theo mình nghĩ thì chủ topic này nói đúng.
Về tính an toàn thì mình đang làm chung với 1 nhóm website nhưng chán quá nên “chia tay” rồi. Mình bảo là cần bảo vệ bài post bằng code verify chẳng hạn thì cả nhóm bảo là “Ối giời, web mới ai thèm tấn công”. Theo tớ thì không chắc mình đã bảo vệ tốt nhất nhưng an toàn được 32% vẫn hơn 31%. Cứ nghĩ được trường hợp nào thì phải fix ngay.
Sự sạch sẽ trong coding cũng hỗ trợ cho chính chúng ta sau này, lỡ được công ty này mời thêm 1 lần nữa (xu hướng vậy) thì ta sẽ nâng cấp hệ thống của họ nhanh hơn. Cũng nhiêu đó tiền mà giúp mình rảnh hơn, tìm project khác kiếm thêm nữa.
Cảm ơn bạn đã chia sẽ. Hy vọng một ngày được hợp tác với 1 coder có tâm tư như bạn. Rất vui được làm quen.
Mình đã từng phải đập website đi làm lại 5 lần trong vòng 2 năm, tốn quá nhiều thời gian tiền bạc và công sức. Đối với kinh doanh online website là linh hồn của doanh nghiệp nên các bạn đừng tiếc tiền đầu tư ban đầu cho website