Bảo mật - Bảo mật ứng dụng web
- quaivatit
- May 12, 2012
- Bảo mật - Bảo mật ứng dụng web
- 866 views
Bảo mật dữ liệu cho website PHP sử dụng Share host linux
Bất kì một website nào cũng có khả năng bị tấn công bất cứ lúc nào, đặc biệt là các site cá nhân, tập thể vừa và nhỏ sẽ chọn giải pháp là thuê shared hosting trên một server. Vì các shared hosting ở cùng server nên độ riêng tư không cao, việc kiên cố hoá website trên shared hosting là rất cần thiết.
1. Phân quyền hợp lí
A. Tìm hiểu về chmod:
Là sự phân quyền truy cập vào một file hay một folder đối với các lớp người dùng giống như các thuộc tính dùng lệnh attrib trong DOS.
+ Các lớp người dùng gồm có: Owner – Group – World
- Owner : người “sở hữu” host.
- Group : là nhóm người dùng.
- World : bất kì ai.
+ Các quyền khi chmod:
- Read : đọc (r = 4)
- Write : ghi (w = 2)
- Execute : thực thi (x = 1)
VD: chmod 751 = rwxr-x–x
+ Cách chmod: xem thêm chmod
B. CHMOD thế nào để an toàn:
Cách CHMOD tối ưu nhất :
- chmod 404 (chỉ cho phép đọc) tất cả các file.
- chmod 101 (chỉ cho thực thi) tất cả các folder.
- chmod 501 thư mục /public_html/
Các cách chmod trên đều không cho write, do đó bố cục được bảo toàn, đồng thời không thể xem cấu trúc site, thư mục, file. Có thể nói đó là các chmod an toàn nhất mà ứng dụng web như diễn đàn, site nhạc, tin tức có thể hoạt động ổn định. Tuy nhiên không phải server nào cũng cho phép bạn chmod như vậy, nếu bạn dùng FTP không thể chmod được như vậy, thì hãy chmod như sau:
- chmod 704 (chỉ cho phép đọc) tất cả các file.
- chmod 701 (chỉ cho thực thi) tất cả các folder.
Lưu ý: Phiên bản cPanel 11 có File Manager V3, có thể dùng để chmod hàng loạt rất tốt và có thể chmod được file 404, folder 101.
Cách CHMOD cho tệp tin (file) và thư mục (folder/directory)
2. “Ẩn mình” – Hide path
Khi đăng kí hosting, domain chính thường được trỏ vào ngay trong thư mục /public_html/, điều này giúp “kẻ tấn công” dễ dàng mò đến file quan trọng của website (vd như file config.php của các forum chẳng hạn), và khi đó thông tin đăng nhập quản lí cơ sở dữ liệu của website đã bị kẻ xấu lấy mất. Điều tệ hại gì sẽ xảy ra ?
Để khắc phục điểm này, ta nên yêu cầu bên cung cấp hosting tạo host không có domain (tên miền) chính và để ta tự gắn vào bằng chức năng add-on domain. Khi add domain sẽ có chỗ để bạn nhập đường dẫn đến thư mục mà domain sau khi gắn thành công sẽ trỏ vào như hình:
VD: /public_html/foder1/folder2/folder3/forum/
Sau khi bạn bấm add các thư mục folder1, folder2, …, forum sẽ được tự động tạo ra. Và bây giờ bạn áp dụng cách chmod ở trên để chmod các thư mục folder1, folder2 … để giấu đường dẫn của site trên server.
>> Bảo mật với PHP - sự dự đoán
3. Không hiển thị lỗi nếu phát sinh
Khi có lỗi phát sinh, PHP sẽ hiện thông báo ra trình duyệt và chỉ rõ lỗi ở file nào, dòng nào và đường dẫn của file, vì thế điều này rất nguy hiểm. Để che lỗi, bạn tạo một file php.ini với nội dung như sau:
display_errors = Off
log_errors = On
Sau đó upload lên thư mục chứa website. Gợi ý: bạn nên up file php.ini trên vào các thư mục mà người dùng sẽ truy cập bằng trình duyệt, thường là thư mục chứa website, thư mục quản trị, thư mục của user …
4. Bật safe-mode (chế độ an toàn) và vô hiệu các hàm nguy hiểm
Thêm hoặc edit 2 dòng sau trong nội dung file php.ini
disable_functions = passthru, system, shell_exec, exec, dir, readfile, virtual,proc_terminate
safe-mode = on
Lưu ý: bạn có thể bỏ bớt các hàm trong danh sách hàm bị vô hiệu nếu hàm đó cần cho website của bạn hoạt động.
5. Phân quyền account truy cập cơ sở dữ liệu MySQL
Khi bạn tạo user truy cập vào database, bạn cần lưu ý:
- Không dùng user và pass của host làm user của database.
- Không cấp quyền DROP như hình.
6. Tránh chmod 777 cho folder/file
Đôi khi bạn gặp một số yêu cầu chmod 777 cho file/folder để thực hiện công việc gì đó, bạn hãy chú ý chmod lại sau khi công việc đã được thực hiện xong.
7. Mã hoá các file chứa thông tin nhạy cảm
Các file nhạy cảm chứa các thông tin kết nối cơ sở dữ liệu như config.php với các kiểu mã hoá như base64 của PHP hoặc mã hoá dùng phần mềm zendguard của www.zend.com. Nếu mã hoá base64 PHP thì các bạn có thể dùng google để tìm với từ khoá “base64 encode”. Mình xin giới thiệu một link để các bạn mã hoá base64 file php: http://dnstools.it-4vn.com/phpencode.php
8. Ngăn download source code khi server gặp sự cố:
Tạo file .htaccess nội dung như sau:
<Files "filename">
Order Allow,Deny
Deny from All
</Files>
Ví dụ:
<Files "config.php">
Order Allow,Deny
Deny from All
</Files>
Mục đích để ngăn cản việc download source code khi PHP bị overload hoặc terminated. Nguyên nhân có thể đến từ bên trong hoặc bên ngoài. Tôi không đề cập ở đây.
9. Vô hiệu hoá biên dịch mã PHP trong thư mục chỉ định
Nếu bạn có một thư mục dành cho việc upload, bạn nên vô hiệu hoá việc biên dịch và thực thi mã PHP trong thư mục ấy vì attacker có thể lợi dụng việc upload để đưa script độc (webshell) lên host của bạn. Tạo file .htaccess đặt vào thư mục đó với nội dung như sau:
php_admin_flag engine off
Sau đó chmod 444 cho file.
10. Thường xuyên cập nhật vá lỗi cho website và đặt một mật khẩu quản trị tương đối kiên cố, liên hệ với nhà cung cấp dịch vụ để sửa lỗi.
Lưu ý cuối cùng:
- File php.ini mình đề cập ở trên chỉ có tác dụng tại thư mục chứa nó, các thư mục không chứa nó sẽ không bị nó chi phối mà sẽ bị cấu hình trong php.ini của server chi phối.
- Các file php.ini và .htaccess nên chmod 444 để bảo vệ cấu hình.
Công ty thiết kế website, lập trình phần mềm NEVICOM
Bài viết khác:
- Mã nguồn wordpress bị hacker tấn công và cách khắc phục
23/04/2013
- Hướng dẫn cấu hình DNS để có thể yên tâm lướt web an toàn
23/04/2013
- Bảo mật gmail, tạo mật khẩu 2 cho gmail như thế nào?
02/11/2012
- Cách bảo vệ tài khoản Gmail của bạn tốt nhất.
02/11/2012
- Bảo mật email, những điều cần làm
01/11/2012
- Bảo mật webite: cần tuân theo quy tắc như thế nào?
01/11/2012
- Bảo mật dữ liệu theo tiêu chuẩn quân đội Mỹ - mã hóa dữ liệu chống hacker
31/08/2012
- Ebook hack iPhone, iPad không chính thức - món đồ nghề dành cho hacker
07/08/2012
- Những điều cần lưu ý khi đặt mật khẩu cho tài khoản email của bạn
07/08/2012
- Cách kiểm tra mật khẩu Yahoo, Gmail có bị lộ hay không
07/08/2012
- Website 5giay.vn bị hacker làm thịt rồi - bị chèn virus?!
04/06/2012
- Bảo mật ứng dụng Web: kiểm tra sự thâm nhập của hacker vào mã nguồn website 1 cách tự động
20/04/2012
- Bảo mật cho ứng dụng web, làm website, thiết kế website phải bảo mật từ đâu?
20/04/2012
- Nhận diện link an toàn trước khi nhấn chuột! Một cách bảo vệ máy tính của bạn tránh virus
20/04/2012
- Những cách phát hiện email lừa đảo của hacker, spamer. Cách bảo vệ tài khoản email của bạn
19/04/2012
Bình luận