Bảo mật website là một quá trình liên tục, không chỉ là việc sử dụng công cụ này hay công cụ khác. Vì vậy, webmaster cần nắm bắt được các kiến thức cơ bản về bảo mật website, cũng như các mẹo bảo mật website được liệt kê dưới đây.
1. Luôn cập nhật phần mềm
Việc đảm bảo tất cả phần mềm được cập nhật bản mới nhất là điều cực kỳ quan trọng trong bảo mật web. Điều này áp dụng cho cả hệ điều hành máy chủ và bất kỳ phần mềm nào chạy trên máy chủ. Khi lỗ hổng bảo mật được phát hiện và công bố tin tặc sẽ nhanh chóng tìm cách để khai thác. Nếu bạn đang sử dụng phần mềm của bên thứ ba như CMS hoặc forum. Bạn cần đảm bảo có thể cập nhật các bản vá bảo mật nhanh nhất. Các nền tảng WordPress, Joomla hay nhiều CMS khác sẽ thông báo cho bạn khi đăng nhập trang quản trị.
Ngoài các nền tảng xây dựng website thì các phần mềm, thư viện được sử dụng để phát triển các website cũng cần được quan tâm và cập nhật kịp thời. Các lỗ hổng bảo mật sẽ xuất hiện cả trong các bộ thư viện này. Nếu các lập trình viên không cập nhật, đây cũng là nơi các hacker dễ dàng tấn công nhất. Hãy đảm bảo hệ thống của bạn luôn cập nhật bản mới nhất cho website của mình. Bao gồm cả các thư viện, gói phần mềm của bên thứ 3 được sử dụng bên trong mã nguồn.
2. Bảo mật web trước SQL Injection
SQL Injection là một lỗ hổng phố biến trên thế giới website. Trong các cuộc tấn công này, kẻ tấn công sử dụng các form dữ liệu hoặc tham số URL tấn công và truy cập hoặc thao tác trực tiếp với cơ sở dữ liệu của các website. Nếu bạn sử dụng các câu lệnh SQL thông thường mà không có cơ chế kiểm duyệt dữ liệu, website sẽ rất dễ vô tình chèn mã độc vào các câu truy vấn dữ liệu, nó có thể được sử dụng để thay đổi bảng biểu, đánh cắp thông tin và phá hoại dữ liệu. Bạn có thể ngăn chặn điều này bằng cách kiểm duyệt chặt chẽ dữ liệu đầu vào hoặc sử dụng các bộ thư viện chuẩn của các thư viện ORM.
Xem xét truy vấn sau đây:
"SELECT * FROM table WHERE column = '" + $parameter + "';"
Nếu kẻ tấn công thay đổi biến $parameter thành ‘ or’ 1 ‘=’ 1 truy vấn sẽ trở thành:
"SELECT * FROM table WHERE column = '' OR '1'='1';"
Điều kiện ‘1’= ‘1’ là luôn đúng. Điều này sẽ cho phép kẻ tấn công thêm một truy vấn bổ sung vào cuối câu lệnh và câu lệnh được thực thi. Tin tặc sẽ dựa vào đây để khai thác thông tin từ CSDL, chèn mã độc, chỉnh sửa, phá hoại website của bạn.
Nếu sử dụng MySQLi trong PHP, bạn lựa chọn kiểu phương án sau:
$stmt = $pdo->prepare('SELECT * FROM table WHERE column = :value'); $stmt->execute(array('value' => $parameter));
3. Phòng ngừa tấn công XSS
Những năm gần đây, XSS luôn là lỗ hổng tồn tại nhiều nhất trong các website. Tấn công XSS, có khả năng nhúng JavaScript độc hại vào các website. Các đoạn mã này có thể thực thi trong trình duyệt của người dùng. Có thể thay đổi nội dung các trang web hoặc ăn cắp thông tin để gửi lại cho hacker.
Ví dụ: Nếu bạn truy cập và xem các bình luận trên một trang dính lỗ hổng XSS thì kẻ tấn công có thể đánh cắp cookies, tài khoản của bạn thông qua các mã JavaScript độc hại được chèn trong các comment khác.
Có rất nhiều công cụ để phát hiện các lỗ hổng XSS cho website. Một ứng dụng trong CyStack Platform là CyStack Scanning có thể giúp bạn làm việc này mà không cần cài đặt bất cứ phần mềm nào.
4. Thận trọng với các thông báo lỗi
Hãy cẩn thận với thông tin bạn đưa ra trên các thông báo lỗi trong sản phẩm. Chỉ cung cấp những thông tin tối thiểu cho người dùng, tránh các thông tin nhạy cảm của máy chủ. Đặc biệt bạn phải tắt chế độc DEBUG của máy chủ.
Ví dụ: API-Key của các dịch vụ bên thứ 3 hoặc mật khẩu cơ sở dữ liệu là những thông tin không bao giờ được để lộ. Cũng như không cung cấp đầy đủ chi tiết các thông báo lỗi vì những điều này có thể giúp hacker khai thác các lỗ hổng như SQL injection dễ dàng hơn. Giữ chi tiết các lỗi trong nhật ký máy chủ và chỉ cho người dùng biết thông tin họ thực sự cần.
5. Kiểm duyệt dữ liệu phía máy chủ
Luôn luôn phải kiểm duyệt tất cả dữ liệu được gửi từ người dùng ở phía máy chủ. Các cơ chế kiểm duyệt dữ liệu bằng Javascript tại trình duyệt rất dễ bị tin tặc vượt qua. Bạn phải có cơ chế kiểm duyệt chính xác và triệt để để lọc các dữ liệu không hợp lệ.
6. Sử dụng mật khẩu mạnh
Để đảm bảo an toàn cho website thì việc sử dụng một mật khẩu mạnh cho tất cả các cửa ngõ như trang quản trị, cơ sở dữ liệu, email… phải đáp ứng được tiêu chuẩn “mạnh” và khó đoán. Nhiều người dùng có thể không thích việc này do thường hay quên hoặc phải mất thời gian để nhớ. Việc thực hiện các yêu cầu về mật khẩu giúp bảo vệ người dùng và website trong thời gian dài.
Lưu trữ mật khẩu: Mật khẩu phải được lưu trữ dưới dạng mã hoá. Tốt hơn là sử dụng một thuật toán hàm băm một chiều như SHA. Việc thêm salt (muối) vào mật khẩu là một ý tưởng tốt. Hãy sử dụng 1 salt mới cho mỗi mật khẩu. Khi đó tin tặc nếu lấy được CSDL cũng khó có thể giải mã được mật khẩu của người dùng.
7. Cẩn thận với các form upload
Các form upload là chức năng cần thiết trên nhiều webiste. Chức năng này cho phép người dùng tải các tệp tin lên thưc mục website. Rủi ro xuất hiện khi các lập trình viên cho phép các tệp tải lên có thể thực thi máy chủ. Hoặc sử dụng các biện pháp hạn chế và phòng ngừa rất nghèo nàn, dễ dàng bị vượt mặt. Tin tặc sẽ tải lên các backdoor, webshell hoặc các tệp tin có thể thực thi được. Đó chính là các mã độc để chiếm quyền kiểm soát máy chủ website.
Ngăn chặn:
- Không nên chỉ dựa vào việc kiểm tra phần mở rộng tệp tin.
- Một số lựa chọn đổi tên tệp khi tải lên cần thiết.
- Phân quyền để các tệp tin độc hại sau khi tải lên cũng không thể thực thi được. Nếu bạn sử dụng apache bạn có thể tạo tệp tin .htaccess để cấu hình. Khi đó website chỉ cho phép truy cập vào các tập tin có phần mở rộng hợp lệ.
deny from all <Files ~ "^\w+\.(gif|jpe?g|png)$"> order deny,allow allow from all </Files>
Cuối cùng, giải pháp tốt là ngăn chặn truy cập trực tiếp vào tập tin sau khi tải lên. Tệp tin sau khi tải lên được lưu trữ trong một thư mục bên ngoài webroot hoặc trong cơ sở dữ liệu. Ngoài ra, nếu có thể, hãy để cơ sở dữ liệu của bạn chạy trên một máy chủ khác. Máy chủ CSDL không truy cập trực tiếp từ bên ngoài, giảm thiểu nguy cơ lộ lọ dữ liệu.
8. Luôn sử dụng HTTPS

HTTPS là một giao thức được sử dụng để cung cấp bảo mật cho website. HTTPS đảm bảo với người dùng rằng họ đang nói chuyện với máy chủ họ mong đợi và không ai có thể chặn hoặc thay đổi nội dung mà họ đang xem. Với những nội dung quan trọng cần bảo mật. Bạn nên chỉ sử dụng HTTPS để truy cập và thao tác. Ngoài ra, Google đã thông báo rằng họ sẽ tăng thứ hạng cho các website sử dụng HTTPS.
9. Công cụ bảo mật web miễn phí
Dưới đây là các công cụ hữu ích giúp bạn bảo mật website tốt hơn:
- Quét lỗ hổng bảo mật website miễn phí
- Plugin bảo mật WordPress miễn phí
- Cloud Security – giám sát an ninh website miễn phí
- Quét mã độc website miễn phí
- Kiểm tra website của bạn có bị vào blacklist (danh sách đen) hay không
- Kiểm tra email quản trị website của bạn có bị lộ hay không
Ngoài ra, bạn có thể tham khảo dịch vụ bảo mật website toàn diện của CyStack để bảo mật tốt nhất cho website mà không cần nhân sự chuyên môn.