Kết nối HTTPS là không an toàn do hình ảnh


14

Tôi hiện đang làm việc trên một trang web và tôi đã cài đặt thành công chứng chỉ SSL của mình.

Trình kiểm tra SSL / TLS GeoTrust xác nhận rằng chuỗi chứng chỉ (bao gồm CA) đã được cài đặt đúng. Mọi thứ đều ổn trên Chrome nhưng ổ khóa của tôi không có màu xanh và trên Firefox thực sự nói rằng trang web không an toàn vì có các yếu tố không được mã hóa trên đó.

Tôi đã sử dụng một dịch vụ trực tuyến để kiểm tra lý do tại sao và thực tế là hình ảnh của tôi không được coi là URL an toàn. Làm cách nào để xử lý tình huống này, hay làm thế nào để tôi nhúng hình ảnh vào trang web của mình một cách an toàn?

Câu trả lời:


32

Thẻ hình ảnh của bạn hiện phải trông giống như:

<img src="http://example.com/images/image.jpg">

Điều đó httpcó nghĩa là hình ảnh KHÔNG được phục vụ an toàn. Kẻ tấn công có thể thay đổi hình ảnh trong quá trình và do đó thay đổi cách trang an toàn khác của bạn trông như thế nào đối với người dùng của bạn.

Thay vào đó, bạn có thể sử dụng bất kỳ cách nào sau đây để phục vụ hình ảnh một cách an toàn:

  • Liên kết httpsrõ ràng:<img src="https://example.com/images/image.jpg">
  • Sử dụng liên kết tương đối với hình ảnh trên tên miền của riêng bạn: <img src="/images/image.jpg">
  • Sử dụng giao thức liên kết tương đối để sử dụng hình ảnh từ các miền khác: <img src="//example.com/images/image.jpg">

Rõ ràng httpssẽ luôn phục vụ hình ảnh một cách an toàn (ngay cả khi trang không được phục vụ an toàn) trong khi liên kết tương đối sẽ chỉ phục vụ hình ảnh một cách an toàn nếu trang được phục vụ an toàn.

Trong Firefox và chrome, bạn có thể nhấp vào ổ khóa và nhận thêm thông tin về sự cố. Làm như vậy, đây là một ảnh chụp màn hình từ Firefox hiển thị danh sách tất cả các hình ảnh trên trang. Thật dễ dàng để quét danh sách và xem những cái nào là http:


2
"Kẻ tấn công có thể thay đổi hình ảnh trong quá trình và do đó thay đổi cách trang an toàn khác của bạn trông như thế nào đối với người dùng của bạn." - hoặc thậm chí kích hoạt một lỗ hổng trong trình kết xuất.
John Dvorak

2
Và chiếm quyền điều khiển cookie, có thể bao gồm mã thông báo truy cập.
Darkhogg

Nghe có vẻ rất giống như nó được khuyến khích để làm như vậy. Nhờ bạn, tôi đã có được ổ khóa màu xanh lá cây của mình nhưng một người bạn nói rằng mã hóa hình ảnh có thể làm chậm trang. Đây có phải là một vấn đề trong trường hợp của tôi?
mti_

3
Chắc chắn có một số chi phí để mã hóa, tuy nhiên nó thường không quá 10% trong những ngày này. Hình phạt hiệu suất đó (ngay cả đối với hình ảnh) là giá bạn phải trả cho một trang web an toàn.
Stephen Ostermiller

whynopadlock.com là một công cụ tiện dụng để nhanh chóng xác định chính xác các tài nguyên không an toàn tại một URL cụ thể.
Ville

5

Vấn đề là trang của bạn đang phục vụ các liên kết từ một vị trí http trái ngược với https. Điều này là do sử dụng các liên kết http tuyệt đối để tham chiếu các tài nguyên như hình ảnh. Có hai phương pháp tốt hơn sẽ cho phép bạn tham chiếu các liên kết trong http hoặc https và tránh vấn đề này.

Nó yêu cầu bạn tìm các liên kết này và thay đổi chúng thành:

  1. liên kết tương đối: tức là./wp-content/yourtheme/images/image1.jpg
  2. hoặc đặt // ở phía trước tên miền như trong //example.com/wp-content/wp-content/yourtheme/images/image1.jpg Điều này sau đó sẽ phục vụ các tài nguyên này qua http hoặc https dựa trên bất kỳ yêu cầu nào được đưa ra.

Trong cả Chrome và Firefox, bạn có thể nhấp vào biểu tượng ổ khóa và sau đó nhấp qua để xem danh sách các liên kết không an toàn vi phạm. Và nếu bạn không thể thấy bất kỳ hình ảnh hoặc tài nguyên nào khác được tô sáng trong trình duyệt nhưng vẫn gặp lỗi, bạn có thể phát hiện ra rằng có một cuộc gọi javascript đang tham chiếu các liên kết hoàn toàn thông qua http .


2
//lúc đầu là tiêu chuẩn và các trình duyệt như Lynx sẽ phàn nàn.
mirabilos

2
@mirabilos RFC 1808 là tiêu chuẩn cho URL và chỉ định các liên kết tương đối giao thức (bắt đầu bằng //) trong phần 2.4.3. Tiêu chuẩn này hiện đã được 15 năm và được thực hiện bởi tất cả các trình duyệt chính bao gồm Lynx
Stephen Ostermiller

#mirabilos Kiểm tra các liên kết kho lưu trữ Google được đề xuất của bạn. Bạn sẽ thấy Google đã sử dụng chúng trong nhiều năm.
garth

1

Nó thực sự là cơ bản. Khi bạn đang xây dựng các trang web được cung cấp qua SSL (https), mọi tham chiếu trong mã của bạn không được mở đầu bằng https sẽ đưa ra các cảnh báo bảo mật - ngoại trừ các liên kết. Lưu ý rằng hầu hết (tất cả) trình duyệt cũng mặc định liên kết đến http. Vì vậy, nếu bạn muốn tham khảo /uploads/12/5/img.jpg hoặc /js/jquery.js, giao thức chuyển sẽ mặc định thành http - điều này thực sự gây phiền nhiễu.

Tất cả các trình duyệt xử lý các cảnh báo khác nhau một chút nhưng bạn sẽ nhận được một số loại tin nhắn. Một tuyên bố chung là trình duyệt càng mới thì thông điệp sẽ càng nghiêm trọng. Một số trình duyệt cũ hơn thực tế bỏ qua các lỗi này trong khi các trình duyệt mới hơn có thể hoạt động như thế giới của bạn đang bị tấn công do thiếu "s".


10
"Hầu hết (tất cả) trình duyệt cũng mặc định liên kết đến http" Err, cái gì? Tuyệt đối tất cả các trình duyệt, trừ khi chúng bị hỏng, sẽ sử dụng giao thức hiện tại nếu bạn không chỉ định rõ ràng giao thức mới.
Oleg V. Volkov

5
Oleg là đúng; Điều đó không "gây phiền nhiễu": nó hoàn toàn sai.
Cuộc đua nhẹ nhàng với Monica

3
Điều này là hoàn toàn sai. Bỏ qua câu trả lời này
martijnve

@martijnve - Làm thế nào là câu trả lời của tôi sai?
trống

4
@blankip xem bình luận của oleg V. Volkov. Bất kỳ tài liệu tham khảo nào bao gồm http là sai. TẤT CẢ những người khác đều ổn. (giao thức tương đối, tương đối miền, tương đối đường dẫn). Và bạn nên sử dụng các liên kết tương đối trong hầu hết các trường hợp.
martijnve

1

Nếu không có gợi ý nào trong số này giúp ích khi không thể hiển thị hình ảnh sau khi bạn bật SSL trên trang web của mình, thì hãy kiểm tra trong trường hợp cài đặt của cPanel cho Hotlinks, trong phần Bảo mật của cPanel. Rất có thể trong cài đặt này, bạn có các mục sau: http://example.comhttp://www.example.comđược bật để cho phép truy cập hình ảnh trong khi httpsphiên bản này không được bật.


-4

Kiểm tra cấu hình giao thức url an toàn của bạn trong cms / wordpress / magento hoặc bất kỳ nền tảng nào khác mà bạn đang sử dụng. Bạn cũng có thể chia sẻ một số thẻ hình ảnh của mình, nhưng hình ảnh img src cơ bản không gây ra loại lỗi đó.

Cấu trúc thẻ hình ảnh rất quan trọng, nhưng trọng tâm của câu hỏi của bạn Tôi nghĩ nó liên quan đến "loại" Chứng chỉ SSL được cài đặt trên trang web của bạn. Một trường hợp cá nhân đã xảy ra với tôi với "Chứng chỉ SSL GoDaddy tiêu chuẩn.

Bạn sẽ thấy một biểu tượng cảnh báo trong thanh tìm kiếm url của Firefox (cụ thể), nói rằng có thể có hình ảnh hoặc thành phần không an toàn trên trang web của bạn. Theo như tôi biết thì đó chỉ là vấn đề làm thế nào firefox xử lý thông tin về chứng chỉ, hoặc thông tin có trong đó. Điều này không xảy ra trong safari, chrome hoặc các trình duyệt khác. Tôi đã tìm thấy giải pháp cho việc này, cài đặt thay vì "SSL tiêu chuẩn", "Chứng chỉ SSL cao cấp hoặc chứng chỉ xác thực mở rộng EVC " có thông tin chi tiết hơn về công ty trang web. Bạn sẽ nhận được một thanh url an toàn ổ khóa màu xanh lá cây.

Tuy nhiên, chứng chỉ ssl cao cấp có thể đắt hơn một chút, khoảng $ 150- $ 200 USD một năm.

nhập mô tả hình ảnh ở đây


5
Điều này không đúng vì: 1) thẻ <img src = "..."> thực sự có thể gây ra loại lỗi này, nếu bạn nhập url HTTP (trái ngược với url HTTPS) và 2) loại giấy chứng nhận hoặc cách nó được xử lý hoàn toàn không có gì để làm với điều này
fNek

Tôi sử dụng cho các thẻ phương tiện toàn cầu img src như {{media url = "path / to / image.jpg"}} có hoặc không có giao thức ssl và tôi không gặp lỗi. Bằng cách này, tôi đang chỉ ra lỗi Stephen ssl Firefox ssl được hiển thị. Trân trọng.
Gaio RoOts

3
Nếu bạn sử dụng URL tương đối, không có vấn đề gì, vì chúng là tương đối. Xin vui lòng đọc câu trả lời khác. Tôi biết rằng bạn đang đề cập đến lỗi của Stephen. Các loại chứng chỉ vẫn không có gì để làm với nó.
fNek

Loại chứng chỉ không có tác động đến cái gọi là 'cảnh báo nội dung hỗn hợp'. Ngoài ra, tất cả các trình duyệt hiện đại ngày nay đều hiển thị cảnh báo, một số rõ ràng, một số khác chỉ đơn giản bằng cách từ chối hiển thị biểu tượng Khóa.
Martijn Heemels
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.