2010-05-04 31 views
26

Tôi đang đánh giá hiệu suất giao diện người dùng của ứng dụng web an toàn (SSL) tại nơi làm việc và tôi tự hỏi liệu có thể nén tệp văn bản (html/css/javascript) qua SSL hay không. Tôi đã thực hiện một số googling xung quanh nhưng không tìm thấy bất cứ điều gì cụ thể liên quan đến SSL. Nếu nó có thể, nó thậm chí có giá trị chu kỳ CPU thêm kể từ khi phản ứng cũng đang được mã hóa? Các phản hồi nén có làm giảm hiệu suất không?Bạn có thể sử dụng gzip qua SSL không? Và kết nối: Tiêu đề Keep-Alive

Ngoài ra, tôi muốn đảm bảo rằng chúng tôi đang giữ kết nối SSL còn sống, vì vậy chúng tôi không thực hiện bắt tay SSL nhiều lần. Tôi không thấy số điện thoại Kết nối: Giữ liên lạc trong các tiêu đề phản hồi tiêu đề. Tôi thấy Keep-Alive: 115 trong số yêu cầu tiêu đề nhưng điều đó chỉ giữ kết nối còn sống trong 115 mili giây (có vẻ như máy chủ ứng dụng đang đóng kết nối sau khi một yêu cầu được xử lý?) Bạn sẽ không muốn máy chủ được thiết lập để đáp ứng tiêu đề miễn là thời gian chờ không hoạt động của phiên không?

Tôi hiểu rằng trình duyệt không lưu nội dung SSL vào đĩa để chúng tôi phân phát cùng một tệp nhiều lần trong các lần truy cập tiếp theo mặc dù không có gì thay đổi. Các khuyến nghị tối ưu hóa chính là giảm số lượng yêu cầu http, rút ​​gọn, di chuyển tập lệnh xuống dưới cùng, tối ưu hóa hình ảnh, khả năng tích trữ tên miền (mặc dù cần cân nhắc chi phí của một lần bắt tay SSL khác), những thứ có tính chất đó.

Trả lời

0

Đối với câu hỏi đầu tiên của bạn: SSL đang làm việc trên một lớp khác với nén. Trong một nghĩa nào đó, hai tính năng này của một máy chủ web có thể hoạt động cùng nhau và không trùng lặp. Có, bằng cách cho phép nén, bạn sẽ sử dụng nhiều CPU hơn trên máy chủ nhưng có ít lưu lượng gửi đi hơn. Vì vậy, nó là một sự cân bằng.

Câu hỏi thứ hai của bạn: Hành vi Keep-Alive thực sự phụ thuộc vào phiên bản HTTP. Bạn có thể di chuyển nội dung tĩnh của mình sang máy chủ không phải ssl (có thể bao gồm hình ảnh, phim, âm thanh, v.v.)

+1

Không thể di chuyển nội dung sang máy chủ không phải ssl, chúng tôi sẽ nhận được thông báo bảo mật trình duyệt nội dung hỗn hợp "trang này chứa cả các mục an toàn và không an toàn" (hoặc nội dung tương tự). – magenta

+0

Điều đó tùy thuộc vào trình duyệt. Một số làm điều đó một số không. Firefox đang giảm thông báo này trong một bản phát hành sắp tới. – Zepplock

23

Vâng, nén có thể được sử dụng trên SSL; nó diễn ra trước khi dữ liệu được mã hóa để có thể trợ giúp các liên kết chậm. Cần lưu ý rằng đây là một ý tưởng xấu : this also opens a vulnerability. Sau khi bắt tay ban đầu, SSL ít chi phí hơn nhiều người nghĩ * - ngay cả khi khách hàng kết nối lại, có một cơ chế để tiếp tục các phiên hiện tại mà không cần phải đổi lại chìa khóa, dẫn đến sử dụng CPU ít hơn và ít chuyến đi khứ hồi hơn.

Cân bằng tải có thể vít với cơ chế tiếp tục, mặc dù: nếu yêu cầu luân phiên giữa các máy chủ thì cần bắt tay thêm đầy đủ, có thể có tác động đáng chú ý (~ vài trăm ms cho mỗi yêu cầu). Định cấu hình cân bằng tải của bạn để chuyển tiếp tất cả các yêu cầu từ cùng một IP tới cùng một máy chủ ứng dụng.

Bạn đang sử dụng máy chủ ứng dụng nào? Nếu nó không thể được cấu hình để sử dụng, hãy nén các tệp và cứ như vậy, hãy xem xét đặt nó đằng sau proxy ngược có thể (và trong khi bạn đang ở đó, hãy thư giãn tiêu đề bộ nhớ cache được gửi với nội dung tĩnh - HttpWatchSupport's linked bài viết có một số gợi ý hữu ích ở mặt trước đó).

(* nhà cung cấp phần cứng SSL sẽ nói những câu như "lên đến 5 lần CPU" nhưng một số chaps from Google báo cáo rằng khi Gmail đến SSL theo mặc định, nó chỉ chiếm khoảng 1% tải CPU)

+5

đọc thêm về BREACH & CRIME – inf3rno

+0

Cảm ơn bạn rất nhiều vì điều này. Tôi chỉ có ssl trên trang web của tôi và thực sự lo lắng về hiệu suất của nó và suy nghĩ làm thế nào để điều chỉnh nó hơn nữa. Bất kỳ sự giúp đỡ nào anh ấy sẽ đánh giá cao. – iSaumya

9

Sử dụng nén với SSL sẽ mở ra cho bạn các lỗ hổng bảo mật như BREACH, CRIME hoặc các cuộc tấn công thuần văn bản đã chọn khác.

Bạn nên tắt tính năng nén vì SSL/TLS không có cách nào để giảm thiểu hiện tại so với các cuộc tấn công oracle chiều dài này.

12
  1. Có lẽ bạn không nên sử dụng nén TLS. Một số tác nhân người dùng (ít nhất Chrome) sẽ vô hiệu hóa nó.

  2. Bạn có chọn lọc có thể sử dụng HTTP nén

  3. Bạn luôn có thể rút gọn

  4. Hãy nói về bộ nhớ đệm quá

Tôi sẽ giả sử bạn đang sử dụng một HTTPS Everywhere web phong cách trang web.

Kịch bản:

  1. nội dung tĩnh như css hoặc js:

    • nén Sử dụng HTTP
    • Sử dụng việc rút gọn
    • kỳ bộ nhớ cache Long (giống như một năm)
    • etag là chỉ hữu ích một chút (do bộ nhớ cache dài)
    • Bao gồm một số loại số phiên bản trong URL trong HTML của bạn trỏ đến tài sản này để bạn có thể cache-ngực
  2. nội dung HTML với ZERO thông tin nhạy cảm (như một Giới thiệu trang):

    • sử dụng HTTP nén
    • sử dụng việc rút gọn
    • sử dụng một thời gian ngắn bộ nhớ cache
    • sử dụng etag
  3. nội dung
  4. HTML với bất kỳ thông tin nhạy cảm (như một CSRF thẻ hoặc tài khoản ngân hàng số):

    • NO nén HTTP
    • Sử dụng việc rút gọn
    • Cache-Control: no-store, must-revalidate
    • etag là vô nghĩa ở đây (do kiểm tra hợp lệ)
    • Refresh: ${seconds until session expires + small buffer}

Ở trên sẽ làm mới trang ngay sau khi phiên hết hạn, điều này sẽ "đăng xuất" người dùng, hiển thị màn hình đăng nhập. Nếu ai đó nhấn nút Quay lại của trình duyệt, thông tin nhạy cảm sẽ không được hiển thị do tiêu đề bộ nhớ cache.

Bạn có thể sử dụng nén HTTP với các dữ liệu nhạy cảm NẾU:

  1. Bạn không bao giờ quay trở lại đầu vào người sử dụng trong phản ứng (có một hộp tìm kiếm không sử dụng nén HTTP?)
  2. Hoặc bạn làm trở lại đầu vào người sử dụng trong phản hồi nhưng gửi phản hồi ngẫu nhiên
+1

** KHÔNG sử dụng tiêu đề làm mới ** để gửi người dùng đến trang đăng nhập. Bạn thực sự có thể khiến người dùng luôn đăng nhập ** mãi mãi **. Kịch bản: giả sử phiên hết hạn sau 20 phút không hoạt động. Người dùng mở tab trình duyệt A lúc 1 giờ chiều và sau đó mở một tab B khác lúc 1:10 tối.Lúc 1:21 chiều, tab A sẽ làm mới, nhưng anh ấy không đăng xuất vì tab B đặt lại thời gian chờ hoạt động của anh ấy là 1:30. Hai tab này sẽ đi qua lại mãi mãi, làm mới các trang và giữ cho người dùng đăng nhập. – goat

Các vấn đề liên quan