Skip to main content
Back to blog

Hướng Dẫn SEO Bước 7: An Ninh — Cơ Sở Mà Google Mong Đợi Năm 2026

·17 min read·by LANGR SEO

Hướng Dẫn SEO Bước 7: An Ninh

Đây là Bước 7 trong Hướng Dẫn SEO 13 Bước. An ninh không chỉ là bảo vệ người dùng — nó ảnh hưởng trực tiếp đến thứ hạng tìm kiếm của bạn. Google đã sử dụng HTTPS như một tín hiệu xếp hạng từ năm 2014, và các yêu cầu chỉ gia tăng.


Hầu hết các chủ sở hữu trang web nghĩ về an ninh như một phạm trù đơn giản: "Chúng tôi có SSL, vì vậy chúng tôi an toàn." Thực tế, Google đánh giá hàng chục tín hiệu an ninh. Các trang với tiêu đề bảo mật hợp lệ, chứng chỉ hợp lệ, và không có nội dung hỗn hợp sẽ vượt trội hơn các trang chỉ có chứng chỉ SSL cơ bản — khi mọi thứ khác đều bằng nhau.

Tin tốt: hầu hết các sửa chữa an ninh đều là cấu hình một lần. Cài đặt chúng một lần, và chúng sẽ bảo vệ thứ hạng của bạn vĩnh viễn.

Cấu Hình SSL

SSL (kỹ thuật gọi là TLS) mã hóa kết nối giữa máy chủ của bạn và người dùng. Kể từ năm 2014, Google đã xác nhận rõ ràng HTTPS là một tín hiệu xếp hạng. Vào năm 2026, việc không có HTTPS không chỉ là vấn đề xếp hạng — Chrome đánh dấu các trang HTTP là "Không An toàn" trong thanh địa chỉ, phá hủy niềm tin của người dùng.

Yêu cầu cho SSL hợp lệ:

| Yêu cầu | Tại sao | Cách Kiểm Tra | |----------------|----------------------|------------------------| | Chứng chỉ hợp lệ | Hết hạn = cảnh báo trình duyệt = người dùng rời đi | Kiểm tra ngày hết hạn | | Chuỗi đầy đủ | Chuỗi không đầy đủ sẽ thất bại trên một số thiết bị | Kiểm tra SSL Labs | | TLS 1.2+ | Các phiên bản cũ có lỗ hổng đã biết | Kiểm tra SSL Labs | | Không có SHA-1 | Đã ngừng sử dụng, trình duyệt từ chối | Chi tiết chứng chỉ | | Bảo hiểm SAN | www và không-www phải đều được bảo hiểm | Chi tiết chứng chỉ | | Tự động gia hạn | Ngăn ngừa thảm họa hết hạn | Cấu hình Let's Encrypt / nhà cung cấp |

Điểm số SSL:

100% = Chứng chỉ hợp lệ + Chuỗi đầy đủ + TLS 1.3 + Mã hóa mạnh + Tự động gia hạn
  0% = Chứng chỉ hết hạn hoặc bị thiếu

Những sai lầm phổ biến với SSL:

  1. Chứng chỉ hết hạn mà không có thông báo — Thiết lập theo dõi (Bước 6) tối thiểu 30 ngày trước khi hết hạn
  2. Chuỗi chứng chỉ không hoàn chỉnh — Máy chủ phải gửi các chứng chỉ trung gian, không chỉ là chứng chỉ chính
  3. Nội dung hỗn hợp — Trang HTTPS tải tài nguyên HTTP (hình ảnh, kịch bản, tệp kiểu dáng)
  4. Vòng lặp chuyển hướng — Chu trình HTTP → HTTPS → HTTP do cấu hình CDN/proxy không chính xác
  5. Không khớp www và non-www — Chứng chỉ bảo hiểm một bên nhưng không bên kia

Lợi ích nhanh: Chạy miền của bạn qua SSL Labs (ssllabs.com/ssltest). Bất kỳ điểm nào dưới "A" có các vấn đề cần khắc phục. Hầu hết các nhà cung cấp dịch vụ lưu trữ sửa chữa những điều này chỉ bằng một cú nhấp chuột.

Tiêu Đề Bảo Mật

Tiêu đề bảo mật là các tiêu đề phản hồi HTTP chỉ định cho trình duyệt cách cư xử khi tải trang của bạn. Chúng ngăn chặn toàn bộ loại tấn công — và các trình thu thập thông tin của Google kiểm tra chúng.

Các tiêu đề bảo mật thiết yếu:

Chính Sách Bảo Mật Nội Dung (CSP)

CSP là tiêu đề bảo mật mạnh mẽ nhất. Nó chỉ rõ cho trình duyệt chính xác tài nguyên nào (kịch bản, kiểu dáng, hình ảnh, phông chữ) được phép tải trên trang của bạn.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'none';

CSP ngăn chặn:

  • Tấn công kịch bản chéo (XSS)
  • Tấn công chèn dữ liệu
  • Clickjacking (qua frame-ancestors)
  • Thực thi kịch bản không được phép (minner tiền điện tử, chèn quảng cáo)

Chiến lược triển khai CSP:

  1. Bắt đầu với Content-Security-Policy-Report-Only (ghi lại vi phạm mà không chặn)
  2. Theo dõi báo cáo trong 1-2 tuần
  3. Danh sách trắng các nguồn hợp pháp
  4. Chuyển sang chế độ thực thi
  5. Thêm report-uri hoặc report-to để ghi lại vi phạm liên tục

X-Frame-Options

Ngăn chặn trang của bạn bị nhúng trong iframes trên các miền khác (bảo vệ chống clickjacking).

X-Frame-Options: DENY

Hoặc nếu bạn cần cho phép định dạng cùng nguồn:

X-Frame-Options: SAMEORIGIN

X-Content-Type-Options

Ngăn chặn trình duyệt từ việc sniffing kiểu MIME (diễn giải các tệp dưới dạng loại khác với loại đã khai báo).

X-Content-Type-Options: nosniff

Dòng này ngăn chặn các cuộc tấn công mà tệp .jpg chứa JavaScript ẩn mà trình duyệt có thể thực thi.

Chính Sách Giới thiệu

Kiểm soát lượng thông tin giới thiệu nào được gửi khi người dùng nhấp vào liên kết từ trang của bạn.

Referrer-Policy: strict-origin-when-cross-origin

Điều này gửi URL đầy đủ cho các yêu cầu cùng nguồn nhưng chỉ gửi nguồn (miền) cho các yêu cầu chéo nguồn. Cân bằng nhu cầu phân tích với quyền riêng tư.

Chính Sách Quyền

Kiểm soát các tính năng trình duyệt nào (camera, microphone, vị trí địa lý, v.v.) có thể được sử dụng trên trang của bạn.

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()

Việc vô hiệu hóa các tính năng bạn không sử dụng ngăn chặn các kịch bản bên thứ ba lợi dụng chúng.

Ví dụ triển khai tiêu đề (Next.js):

// next.config.js
module.exports = {
  async headers() {
    return [{
      source: '/(.*)',
      headers: [
        { key: 'X-Content-Type-Options', value: 'nosniff' },
        { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
        { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
        { key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
        { key: 'Strict-Transport-Security', value: 'max-age=31536000; includeSubDomains; preload' },
      ]
    }]
  }
}

Triển khai tiêu đề (Apache .htaccess):

Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Triển khai tiêu đề (Nginx):

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Lợi ích nhanh: Thêm tất cả 5 tiêu đề trên vào cấu hình máy chủ của bạn. Điều này chỉ mất 5 phút và ngay lập tức cải thiện tư thế an ninh của bạn trong bất kỳ công cụ quét nào.

HSTS Preload

HTTP Strict Transport Security (HSTS) yêu cầu trình duyệt luôn sử dụng HTTPS cho miền của bạn — ngay cả trước khi yêu cầu đầu tiên. Nếu không có HSTS, lần truy cập đầu tiên vào trang của bạn vẫn có thể sử dụng HTTP (dễ bị tấn công) trước khi chuyển hướng đến HTTPS xảy ra.

Tiêu đề HSTS:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Ba chỉ thị:

| Chỉ thị | Ý nghĩa | |--------------------|----------------------------------------| | max-age=31536000 | Nhớ điều này trong 1 năm (tính bằng giây) | | includeSubDomains | Áp dụng cho tất cả các miền phụ | | preload | Yêu cầu đưa vào danh sách preload của trình duyệt |

Danh sách HSTS preload:

Bảo vệ HSTS tối ưu. Các trình duyệt được trang bị danh sách miền tích hợp sẵn mà phải luôn sử dụng HTTPS. Việc gửi miền của bạn đến hstspreload.org có nghĩa là:

  • Người dùng lần đầu tiên truy cập sẽ nhận HTTPS ngay lập tức (không có chuyển hướng HTTP → HTTPS)
  • Không thể cho phép kẻ tấn công giảm kết nối
  • Vĩnh viễn (khó để xóa một khi đã gửi)

Yêu cầu cho HSTS preload:

  1. Chứng chỉ HTTPS hợp lệ
  2. Chuyển hướng tất cả HTTP sang HTTPS (bao gồm cả miền phụ)
  3. Tiêu đề HSTS với max-age >= 31536000
  4. Tiêu đề HSTS bao gồm includeSubDomains
  5. Tiêu đề HSTS bao gồm preload
  6. Tất cả các miền phụ phải hỗ trợ HTTPS

Cảnh báo: Chỉ gửi đến preload nếu TẤT CẢ các miền phụ của bạn hỗ trợ HTTPS. Chỉ thị includeSubDomains có nghĩa là bất kỳ miền phụ chỉ HTTP nào sẽ trở nên không thể truy cập được.

Lợi ích nhanh: Nếu bạn đã có HTTPS trên tất cả các miền phụ, hãy thêm tiêu đề HSTS đầy đủ và gửi đến hstspreload.org. Quy trình xử lý mất vài tuần nhưng bảo vệ thì vĩnh viễn.

Quét Lỗ Hổng

Quét lỗ hổng tự động nhận diện các vấn đề an ninh đã biết trong ngăn xếp của bạn trước khi kẻ tấn công lợi dụng chúng.

Quét lỗ hổng kiểm tra những gì:

  • Phần mềm lỗi thời: WordPress, plugin, thư viện JavaScript có CVE đã biết
  • Tệp bị lộ: .env, .git, wp-config.php, bản sao cơ sở dữ liệu
  • Rò rỉ thông tin: Tiêu đề phiên bản máy chủ, chế độ gỡ lỗi, dấu vết ngăn xếp
  • Thông tin đăng nhập mặc định: Trang quản trị không xác thực, mật khẩu mặc định
  • Cổng/dịch vụ mở: Các dịch vụ không cần thiết bị lộ ra internet
  • Điểm chèn: Mẫu không có bảo vệ CSRF, đầu vào không được xác thực

Các lỗ hổng phổ biến theo nền tảng:

| Nền tảng | Lỗ hổng Chính | Cách Khắc Phục | |---------------|-------------------------|--------------------------| | WordPress | Plugin lỗi thời | Tự động cập nhật + WAF | | Shopify | Quyền của ứng dụng bên thứ ba | Đánh giá danh sách ứng dụng mỗi quý | | Next.js | Các tuyến API bị lộ | Middleware xác thực + giới hạn tốc độ | | Các trang tĩnh | Cấu hình CDN không đúng | Xem xét quy tắc bộ nhớ cache | | Tùy chỉnh | Tiêm SQL | Truy vấn theo tham số |

Tần suất quét:

  • Hàng ngày: Quét bề mặt tự động (SSL, tiêu đề, tệp bị lộ)
  • Hàng tuần: Kiểm tra lỗ hổng phụ thuộc (npm audit, trình quét plugin WordPress)
  • Hàng tháng: Quét sâu với kiểm tra xác thực
  • Sau mỗi lần triển khai: Kiểm tra hồi quy

Lợi ích nhanh: Chạy npm audit (Node.js) hoặc kiểm tra danh sách plugin CMS của bạn để tìm các thành phần lỗi thời. Khắc phục ngay các vấn đề nghiêm trọng/cao.

Nội Dung Hỗn Hợp

Nội dung hỗn hợp xảy ra khi một trang HTTPS tải tài nguyên (hình ảnh, kịch bản, tệp kiểu dáng, iframes) qua HTTP. Điều này làm giảm một phần mã hóa và kích hoạt cảnh báo trình duyệt.

Các loại nội dung hỗn hợp:

| Loại | Mức độ nghiêm trọng | Ví dụ | Hành vi của trình duyệt | |----------|--------------------|----------------------|--------------------------------| | Hoạt động | Cao | Kịch bản HTTP, iframe, CSS | Bị chặn theo mặc định | | Thụ động | Trung bình | Hình ảnh HTTP, video, âm thanh | Tải cùng với cảnh báo |

Nội dung hỗn hợp hoạt động bị chặn bởi các trình duyệt hiện đại — nghĩa là các kịch bản và kiểu dáng của bạn sẽ không tải. Nội dung hỗn hợp thụ động được tải nhưng hiển thị cảnh báo an ninh.

Tìm nội dung hỗn hợp:

  1. Mở Chrome DevTools → Console
  2. Tìm kiếm cảnh báo "Mixed Content"
  3. Ngoài ra, quét bằng công cụ crawler (Screaming Frog, LANGR)

Các nguồn nội dung hỗn hợp phổ biến:

  • URL http:// được mã hóa cứng trong nội dung (bài viết blog, mô tả sản phẩm)
  • Các widget bên thứ ba tải tài nguyên HTTP
  • Nội dung nhúng (nhúng YouTube cũ, widget mạng xã hội)
  • CSS background-image với URL HTTP
  • Phông chữ tải qua HTTP

Khắc phục nội dung hỗn hợp:

<!-- Không tốt -->
<img src="http://example.com/image.jpg" />

<!-- Tốt -->
<img src="https://example.com/image.jpg" />

<!-- Tốt nhất (tương đối với giao thức, thích ứng với giao thức của trang) -->
<img src="//example.com/image.jpg" />

Khắc phục cơ sở dữ liệu (WordPress):

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://yourdomain.com', 'https://yourdomain.com');

Lợi ích nhanh: Mở trang chủ của bạn trong Chrome, nhấn F12, kiểm tra tab Console để tìm cảnh báo nội dung hỗn hợp. Khắc phục bất kỳ cảnh báo nào xuất hiện — những điều này sẽ được Google nhìn thấy trực tiếp.

Rủi Ro Từ Kịch Bản Bên Thứ Ba

Mỗi kịch bản bên ngoài mà bạn tải là một rủi ro tiềm tàng cho an ninh (và hiệu suất). Các kịch bản bên thứ ba có thể:

  • Bị tấn công (các cuộc tấn công chuỗi cung ứng)
  • Theo dõi người dùng của bạn mà không có sự đồng ý (vi phạm GDPR)
  • Làm chậm trang của bạn (cản trở hiển thị, độ trễ mạng)
  • Làm hỏng chức năng (cập nhật phiên bản, gián đoạn)
  • Chèn nội dung không mong muốn (kịch bản quảng cáo không hiệu quả)

Đánh giá các kịch bản bên thứ ba của bạn:

| Kịch bản | Cần thiết? | Mức độ rủi ro | Thay thế | |--------------------------|-------------|----------------|---------------------| | Google Analytics | Thường có | Thấp | Theo dõi phía máy chủ | | Widget trò chuyện | Có thể | Trung bình | Giải pháp tự lưu trữ | | Nút chia sẻ trên mạng xã hội | Hiếm khi | Trung bình | Liên kết chia sẻ tĩnh | | Kiểm tra A/B | Đôi khi | Cao | Kiểm tra phía máy chủ | | Pixel tiếp thị lại | Quyết định kinh doanh | Cao | Dữ liệu bên thứ nhất | | CDN phông chữ | Tiện lợi | Thấp | Phông chữ tự lưu trữ |

Giảm thiểu rủi ro cho các kịch bản bên thứ ba thiết yếu:

  1. Tính toàn vẹn của tài nguyên (SRI): Xác minh hàm băm ngăn chặn các kịch bản bị sửa đổi không tải được
<script src="https://cdn.example.com/lib.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxAE+sO0..."
        crossorigin="anonymous"></script>
  1. Hạn chế CSP: Chỉ cho phép các kịch bản từ các miền đã biết
  2. iframe cách ly: Tách biệt các widget bên thứ ba
  3. Đánh giá định kỳ: Kiểm tra hàng quý tất cả các tài nguyên bên ngoài
  4. Giám sát: Cảnh báo khi có miền mới bên ngoài xuất hiện trên các trang của bạn

Lợi ích nhanh: Liệt kê mọi thẻ