Bảo mật Apache

Bảo mật web server là công việc quan trọng thường bị bỏ qua khi triển khai website, bảo mật Apache đồng nghĩa với việc hạn chế những thông tin rò rỉ, không cho phép user không có quyền hạn được phép truy cập vào. Sau đây là 1 số thủ thuật cho phép bạn tăng cường độ bảo mật cho Apache

1/ Ẩn thông tin Apache (version) và thông tin hệ điều hành

Thông thường với thiết lập ban đầu, Apache sẽ hiển thị phiên bản (version) của Apache với phiên bản của hệ điều hành đang sử dụng. Điều này nguy hiểm nếu hacker có thể tận dụng phiên bản cũ đang gặp lỗi để khai thác

Những thông tin hiển thị như trên là không cần thiết, ta có thể tắt nó đi bằng cách sửa file httpd.conf

Sau có chỉnh ServerSignature thành Off, và chỉnh ServerTokens thành Prod

Tiếp tục bạn hãy restart Apache để xem kết quả

2/ Tắt Directory Listing

Chức năng Directory Listing cho phép Apache hiển thị danh sách file và folders khi web users truy cập vào 1 path trên website nếu path đó không có file index. Điều này rất nguy hiểm bởi vì web users có thể thấy toàn bộ file sau đó tìm cách khai thác lỗ hổng trên các file.

Để tắt chức năng này, bạn có thể tùy chỉnh phần Options trong <Directory> của file httpd.conf

Kết quả sau khi tắt Directory Listing

3/ Tắt những module không sử dụng đến

Nếu Apache đang bật những module của nó bạn không dùng tới thì tốt nhất nên tắt bớt, để Apache đỡ tốn tài nguyên cũng như hạn chế bị khai thác lỗ hổng trên các module đó. Bạn có thể hiển thị danh sách các module đang được enable bằng cách gõ httpd -M

Một số module không sử dụng tới bạn có thể tắt bớt như mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex … bằng cách thêm dấu # (comment) vào trước module đó trên file httpd.conf. Ví dụ

Sau khi lưu lại httpd.conf, bạn cần restart Apache để mọi thiết lập sẽ được lưu lại

4/ Hạn chế truy cập đến các file nằm ngoài thư mục gốc (root directory)

Nếu bạn muốn chắc chắn rằng các file nằm ngoài thư mục gốc (web root directory) không được phép truy cập, bạn phải đảm bảo thư mục gốc được hạn chế bởi tùy chọn AllowDeny trong file cấu hình Apache httpd.conf

Một khi bạn hạn chế truy cập bên ngoài web root directory, bạn sẽ không thể truy cập vào bất cứ file nào nằm trên thư mục khác trên web server, nếu cố gắng truy cập thì Apache sẽ trả lại mã lỗi 404.

5/ Sử dụng mod_evasive để hạn chế các cuộc tấn công DDOS

Nếu bạn muốn bảo vệ website trước những cuộc tấn công DDOS, bạn có thể sử dụng mod_evasive của Apache lên. Đây là mod (module) của 1 bên thứ 3 giúp cho Apache có thể phát hiện và ngăn chặn và giảm thiểu thiệt hại nếu website của bạn dính phải cuộc tấn công DDOS. Bạn có thể tải module đó tại đây.

https://drive.google.com/uc?export=download&id=0B_vqvT0ovzHcdkNKWmduZWRwbGM

6/ Sử dụng mod_security để tăng cường khả năng bảo mật của Apache

Module này hoạt động như 1 bức tường lửa (firewall) giúp cho bạn có thể theo dõi và quan sát luồng truy cập (traffic) vào Apache theo thời gian thực. Nó có thể giúp Apache ngăn chặn kiểu tấn công như brute forte.

7/ Hạn chế kích thước request gửi lên Apache

Mặc định, Apache không có bất cứ hạn chế nào về kích thước http request được gửi đến nó có thể dẫn đến 1 cuộc tấn công DDOS. Bạn có thể giới hạn kích thước của 1 request gửi đến bằng cách thêm vào option LimitRequestBody, giá trị cho option này có thể được set từ 0 cho đến 2GB (tức là 2147483647 bytes) tùy theo nhu cầu của bạn.

Tự động backup source code + database của website bằng dòng lệnh Linux

Dạo này cũng hay nghịch bash script của Linux nên tôi cũng code được 1 file .sh giúp xuất database MySQL tự động và nén toàn bộ thư mục gốc của website thành file zip. Code cũng đang trong quá trình hoàn thiện các tính năng cao cấp hơn nên hiện tại chỉ vỏn vẹn 4 dòng thôi ????

*** Cách sử dụng: các bạn tạo thư mục bot trong thư mục gốc của website, sau đó tạo 1 file backup.sh trong thư mục đó với nội dung như sau:

Sau cùng mỗi lần chạy backup bạn chỉ cần vào thư mục bot và chạy đoạn code

So sánh độ giống nhau giữa 2 chuỗi ký tự với Fuzzywuzzy trong Python

Hôm nay tình cờ rảnh việc lang thang Facebook thì 1 ông bạn post 1 library của C# về so sánh độ giống nhau giữa 2 chuỗi ký tự

https://fuzzystring.codeplex.com/

Keyword sử dụng để search Google “Fuzzy string”, vì không rành C# lắm nên quyết định tìm library cho Python, cuối cùng cũng có ^^

https://github.com/seatgeek/fuzzywuzzy

Cách sử dụng lib này cũng khá dễ dàng

Việc so sánh độ giống nhau giữa các chuỗi ký tự khá hữu ích trong việc crawl nhiều data từ nhiều website khác nhau, lúc đó việc so sánh để xếp chung data vào cùng 1 category khá là quan trọng, tránh trùng lặp dữ liệu. Một ví dụ thực tiễn về fuzzy string matching đó là các website thu thập dữ liệu về giá của sản phẩm, hoặc thu thập coupon …

Chuyển UTF-8 khi bị sai encode

Mình có nhiều chuỗi bao gồm đủ thể loại gồm có encode Windows-1252, umlauts, accents, … Ví dụ như sau:

– アデレード㠮é…åŠ›çš„ã ªä¸˜é™µåœ°å¸¯ã «ä½ ç½®ã —ã ¦, ブラックウッドãƒ

– Räksmörgås

– Das Eszett oder Scharfes S (ß) repräsentiert den stimmlosen Klang.

– Desinfektionslösungstücher für Flächen

Giờ mình cần chuyển về UTF-8 của character tương ứng, ví dụ:

– å thành a
– ß thành S
– ö thành o
– ü thành u

Hiện tại mình đang code như này nhưng có 1 vài ký tự vẫn không chuyển được mà bị mất hoặc thành dấu hỏi chấm (?).

Vậy câu hỏi là: có cách nào làm được triệt để và chính xác không các cụ?

Chắc ai đó sẽ cần:

 

 

Kết hợp WordPress và Laravel

WordPress là CMS nổi tiếng nhất thế giới hiện nay, và Laravel là 1 PHP Framework đang đứng hàng top với nhiều developer đang sử dụng, cho nên hẳn là sự kết hợp giữa 2 trường phái này rất là thú vị ???? Làm sao để 1 website đang sử dụng WordPress có thể sử dụng được core của Laravel hoặc ngược lại sẽ được đề cập đến trong bài viết này. Chúng ta sẽ cùng xem WordPress và Laravel “song kiếm hợp bích” như thế nào nhé? ????

1/ WordPress Corcel

– Corcel sử dụng Eloquent model của Laravel để tương tác với WordPress database. Một số ví dụ đơn giản sau đây tôi nghĩ sẽ chắc cũng rất dễ hiểu

– Corcel hỗ trợ hầu hết các khái niệm trong WordPress như posts, post types, taxonomies, pages, categories và attachments. Corcel vẫn còn đang trong quá trình tiếp tục phát triển, bạn có thể tham khảo tại link Github của dự án này

https://github.com/jgrossi/corcel

2/ WordPressToLaravel

– WordPressToLaravel giúp bạn đồng bộ dữ liệu từ blog wordpress.com. Nó chạy như 1 cron job thông qua Laravel Scheduler, tự động download và import dữ liệu vào database dưới máy của bạn. Chi tiết về cách sử dụng bạn có thể tham khảo ở link bên dưới

https://github.com/jasonherndon/WordpressToLaravel

3/ WP Eloquent

– WP Eloquent là 1 package giúp bạn tương tác dễ dàng với WordPress database. Package này bao gồm như model như Posts, Comments, Post Meta và User Meta. Sau khi cài đặt bạn có thể sử dụng nó 1 cách dễ dàng

– WP Eloquent có thẻ làm việc tốt với Laravel DebugBar và không tạo thêm bất kỳ kết nối phụ nào đến database.

4/ laravel-wp-api

– laravel-wp-api có thể tích hợp trực tiếp với WordPress JSON REST API cho những self-hosted website. Cách sử dụng cũng rất đơn giản

hoặc tham khảo thêm toàn bộ tại trang Github của dự án https://github.com/Cyber-Duck/laravel-wp-api

Một số phương thức khác kết hợp WordPress và Laravel

WordPlate
Sử dụng WordPress với Lumen
Cấu hình Laravel API với WordPress backend
Sử dụng Laravel 4 + Eloquent với WordPress

Buôn bán kiểu Việt Nam :D

Có 1 thằng Tây đi lang thang đến 1 ngã 4 đường. Anh ta dòm quanh thấy trông vắng quá bèn cắm dùi mở 1 cây xăng. Xe cộ qua lại ghé vào đổ xăng ủng hộ. 1 anh Tây khác ghé đổ xăng thấy chỗ này cũng được nên Anh ta qua bên kia đường mở một cái Garage sửa xe để phục vụ những người ghé vào đổ xăng. Thế rồi 1 anh Tàu đi ngang thấy vậy bèn qua bên kia đường mở 1 cái nhà hàng phục vụ ăn uống. Một anh khác đi ngang qua…thấy ngã 4 đường có quán ăn, cây xăng, gara có vẻ sầm uất, thế là anh ta qua góc còn lại mở 1 cái Hotel. Chẳng mấy chốc, ngã tư đường sầm uất hẳn lên…rồi mọi người đến mở thêm tiệm hoa, tiệm thuốc, tiệm cắt tóc v.v….Khu vực trở thành 1 trung tâm thương mại đông đúc. Bà con sống hạnh phúc với nhau.

Có 1 anh Việt Nam đi lang thang tới 1 ngã tư đường. Anh ta dòm quanh thấy trống vắng quá bèn cắm dùi mở 1 cây xăng. Xe cộ qua lại ghé vào đổ xăng ủng hộ. 1 ngày kia có 1 anh Việt Nam đi ngang thấy có vẻ đươc bèn qua bên kia đường mở 1 cây xăng giống y chang rồi bán rẻ hơn 1 chút. Rồi 1 anh Việt Nam thứ 3 đi ngang, thấy 2 thằng kia làm được bèn chạy qua góc kia mở cây xăng thứ 3, giảm giá thêm chút nữa để cạnh tranh…đến đây thì chắc bạn biết rằng chẳng mấy chốc góc còn lại có thêm anh Việt Nam thứ 4 mở cây xăng thứ 4 và lại giảm giá bán.

Anh thứ 1 chưa kịp thu hồi vốn mà cũng không thể giảm giá nữa vì giá giảm 4 lần lỗ rồi…nên anh ta buộc phải pha tạp chất vô xăng để mà bán kiếm sống. Anh thứ 2 thấy anh 1 pha tạp chất nên trương cái băng rôn lên bảo rằng ” Tiệm số 2 mới là cây xăng Gốc…chính hiệu”…anh thứ 3 đứng bên kia đường xỉa xói “Mày căng băng rôn bảo mày chính hiệu, mày là xăng gốc…thế khác nào mà bảo tao bán đồ dỏm à?”…Thế là anh số 3 vác hàng qua đánh lộn với anh số 2.

Anh số 4 thấy thế móc Iphone ra quay phim lại rồi post lên mạng ghi Status ” Haizz…làm ăn bây giờ sao bất chính quá…toàn côn đồ và lừa gạt”. Cư dân mạng share rầm rầm thương cảm anh số 4…Báo mạng ăn cắp hình anh số 4 về giật tít ” Giang hồ đại chiến giành bảo kê ngành xăng dầu”….vô tình tới tai một sếp Công An…sếp công an thấy cai Băn Rôn của anh số 2 mới giật mình “hèn gì chiếc Roll Royce người ta cho mình đổ xăng xong thì không chạy nữa….thì ra thằng số 1 nó Pha tạp chất”…thế là cho Lính xuống kiểm tra.

Lính xuống kiểm tra anh số 1…anh số 1 chửi bới ko cho kiểm tra. Móc Iphone ra quay lại đoàn kiểm tra và Hù “Mấy anh sao chỉ kiểm tra 1 mình tui?” Đoàn Kiểm tra sợ bi đăng lên mạng nên đành làm đúng chức năng…đè 3 thăng kia ra thanh tra luôn.

Té ra cả 4 thằng ai cũng pha tạp chất hoặc bơm không đúng lượng hoặc gắn chip ăn gian. Thế là đóng cửa hết 4 cây xăng. 4 thằng phá sản…lại đi lang thang.

Góc đường bây giờ lại trống vắng với 4 cây xăng bỏ hoang tàn phế theo thời gian. Một thời gian sau, người ta thấy ở ngã tư ấy xuất hiện 4 anh đánh giày Việt Nam, và hằng ngày các anh này vẫn đánh nhau để dành khách…

Sưu tầm .

Cài đặt Google Play Store cho Amazon Kindle Fire mà không cần root máy

Bài viết này có lẽ không liên quan gì tới lập trình cho lắm, nhưng dù sao cũng là công sức 1 buổi tối mày mò của mình =)) Số là lúc trước có mua 2 cái tablet Amazon Kindle Fire (7 inches) của thằng Amazon, nhưng ngặt 1 nỗi là nó lại tùy biến hệ điều hành Android xóa mất cái Google Play Store (nghĩa là bạn phải cài app thông qua store của thằng Amazon mà ko cài được qua store của Google). Mà kho app của thằng Amazon thì cực kỳ nghèo nàn và củ chuối.

Mặc dù mua cái tablet Kindle với giá khá rẻ, tầm < 40$/cái (mua đợt khuyến mãi Black Friday) nhưng cũng vứt xó vì cái kho app tồi tàn của AMZ. Một ngày đẹp trời bỗng dưng tìm cách để cài Google Play Store cho nó thì ai dè lại có hướng dẫn ngay trên trang sale của Amazon ngay tại phần “Customer Questions & Answers”. Mình xin chia sẻ lại cách thực hiện trên chiếc máy tính bảng giá rẻ này mà không cần phải root máy.

1/ Vào phần Settings > Security > Apps from Unknown Sources (chuyển thành Enable) => cho phép cài đặt file .apk từ các nguồn khác.
2/ Mở trình duyệt Silk Browser trên Amazon Kindle Fire và truy cập vào website http://www.apkmirror.com/
3/ Lần lượt tải về và cài đặt các app (file .apk) theo thứ tự sau
a) “Google Account Manager 5” (version 5.1.1743759)
b) “Google Services Framework 5” (v 5.1.1743759)
c) “Google Play services 10” (v 10.2.98)
d) “Google Play Store 7” (v 7.4.12)

Sau khi cài đặt xong xuôi, bạn quay về phần Home trên chiếc Kindle của bạn và scroll xuống dưới, bạn sẽ thấy biểu tượng icon của Google Play Store. Việc còn lại chắc là bạn cũng biết sẽ làm gì rồi nhỉ! =)) Mở Google Play Store lên và tha hồ cài app và game thỏa thích mà không còn bị hạn chế nữa 😀

Chúc bạn cài đặt thành công! ^^

Lập trình web bằng C++ với TreeFrog Framework

Ít ai nghĩ rằng C++ có thể được sử dụng để lập trình web, tuy nhiên với TreeFrog Framework bạn có thể dễ dàng làm được điều đó. Ưu điểm của việc dùng C++ để làm web là tốc độ và hiệu suất tốt hơn các ngôn ngữ khác (cái này thì đương nhiên), còn nhược điểm thì chắc là khá nhiều: ít framework hỗ trợ, cấu hình sẽ phức tạp hơn các ngôn ngữ chuyên để làm web khác như PHP, Ruby, C# …

Bài viết này sẽ hướng dẫn căn bản cách cài đặt TreeFrog Framework lên server Ubuntu.

1/ Cài đặt các thư viện cần thiết trên server

Đầu tiên chúng ta sẽ cài thư viện Qt và các dev tools

Tiếp theo cài đặt các thư viện database

2/ Cài đặt TreeFrog Framework

Tải source code của TreeFrog về, hiện tại là phiên bản 1.15.0 khi mình đang viết bài này, có thể truy cập vào link này để xem http://www.treefrogframework.org/download

Sau khi tải về file sẽ có dạng treefrog-framework-x.x.x.tar.gz với x.x.x là version của TreeFrog, giải nén source code bằng cách

Cài đặt source code

Các tutorial nâng cao hơn bạn có thể tham khảo tại trang chủ của tác giả: http://www.treefrogframework.org