2009-02-25 22 views
8

Chúng tôi đang suy nghĩ để kích hoạt SSL một phần của trang web của chúng tôi, nhưng một số trang chứa quảng cáo từ nhà cung cấp bên thứ ba (như Google AdSense).Làm cách nào để tránh cảnh báo "Trang này chứa cả các mục an toàn và không an toàn" trong trình duyệt của tôi?

Tôi nghĩ điều này sẽ tạo ra sự cố gây phiền toái cho người dùng vì họ sẽ thấy thông báo cảnh báo như "Trang này chứa cả các mục an toàn và không an toàn" khi họ xem một trang có quảng cáo. Tuy nhiên, khi tôi duyệt Gmail bằng https thay vì http, tôi không thấy cảnh báo đó trong firefox.

Có ai biết Gmail ẩn nội dung này không?

Trả lời

15

tài liệu của Google cho thấy đây là một vấn đề được biết đến và không đưa ra một cách giải quyết: https://www.google.com/adsense/support/bin/answer.py?answer=10528

+0

nếu google không hỗ trợ, làm cách nào tôi có thể thấy quảng cáo từ google khi tôi đăng nhập vào gmail qua https? – Herman

+0

Google nhúng quảng cáo ngay trên trang và không sử dụng bất kỳ cơ chế nào để bao gồm chúng bên ngoài. – Rob

+1

Gmail được xử lý đặc biệt như một sản phẩm khác của Google. – ceejayoz

19

một số trang chứa quảng cáo từ nhà cung cấp bên thứ ba (như Google AdSense)

Sau đó trình duyệt là đúng - không an toàn.

Với AdSense và hầu hết các mạng quảng cáo khác, bạn được cung cấp liên kết tới JavaScript. Khi bạn tham khảo bất kỳ tập lệnh bên ngoài <> nào, bạn sẽ hoàn toàn tin tưởng vào nội dung của trang của mình đối với nhà cung cấp tập lệnh bên ngoài. Bạn cần phải tin tưởng họ chỉ làm những gì họ nói họ sẽ làm (hiển thị quảng cáo) và không phải thứ gì đó bất chính như tiếp nhận biểu mẫu đăng nhập từ trang mà bạn đang truy cập và đánh cắp các giá trị bạn nhập vào, hoặc nếu Tập lệnh "quảng cáo" đã được đưa vào trang tài khoản ngân hàng của bạn, tự động xóa toàn bộ số tiền của bạn.

Vì vậy, tập lệnh bên ngoài là vấn đề đáng tin cậy, nhưng nếu bạn đang sử dụng nhà cung cấp giao diện HTTPS cho quảng cáo của họ, thì ít nhất chỉ có một bên bạn biết. Nếu nhà cung cấp quảng cáo chỉ có giao diện HTTP, thì bạn sẽ gửi tin cậy của mình cho bất kỳ ai có thể nắm quyền kiểm soát với cuộc tấn công tương tự giữa người hoặc trung gian. Bạn đang giảm hiệu quả mức độ tin cậy của toàn bộ trang của bạn thành HTTP không được mã hóa, do đó trình duyệt khá chính xác để khiếu nại rằng trang đó thực sự không an toàn hơn bất kỳ trang web HTTP cũ nào.

3

Vì đây là câu trả lời cho Analytic mà bạn có thể sử dụng điều này để không hiển thị quảng cáo trên các trang an toàn của bạn

if ("http:" == document.location.protocol) { /*show your adds here*/ } 

Tôi có ý tưởng này từ cách tôi làm phân tích trên trang web của tôi

<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 

tôi thừa nhận điều này có nghĩa là bạn không thể hiển thị quảng cáo trên các trang bảo mật của mình, nhưng có thể bạn không muốn Google đọc nội dung trang bảo mật của mình và hiển thị quảng cáo. (Đó là cảnh sát và bào chữa cho Google, nhưng như đã đề cập, họ không hỗ trợ nó)

Để trả lời câu hỏi Gmail của bạn ... (sử dụng Firebug tại đây, vì vậy tôi có thể giải thích điều này sai)

  1. Tôi đăng nhập vào gmail bằng kết nối luôn an toàn. Không quảng cáo.
  2. Tôi bật bảng điều khiển để xem những gì các kết nối mà gmail tạo ra.
  3. Tôi xóa bảng điều khiển
  4. Tôi nhấp vào thông báo có quảng cáo được hiển thị ở bên phải.

Gmail chỉ thực hiện hai cuộc gọi. Đầu tiên, hãy truy cập https://mail.google.com mà tôi đoán là email của tôi.Thứ hai là POST tới https://mail.google.com/mail/channel/

Tôi đoán (mọi người khác đều đúng với tôi) Gmail yêu cầu bài đăng từ proxy phân phối quảng cáo.

GMail gửi nội dung tới proxy, proxy nhận quảng cáo, proxy gửi nội dung trở lại Gmail. Tất cả đều bảo mật.

TỔNG GUESS CÓ

Cảm ơn downvote nhưng không có lời giải thích về những gì không phải là hữu ích

2

"Có ai biết làm thế nào Gmail ẩn này?"

Câu trả lời ngắn: họ sử dụng https để tìm nạp quảng cáo. Xem qua tab Net trong Firebug để tải trang của GMail Tôi thấy quảng cáo trên trang yêu cầu có URL https://mail.google.com/mail/?ui=2&ik=bbff8a9f5c&view=ad&ak=is00jux7yq7kgk730lqdkxklz03d9d8 để có vẻ như họ có cách phân phát quảng cáo qua https nhưng chỉ cho các trang web của riêng mình.

4

nếu bạn đang cố gắng bao gồm nội dung không an toàn và có quyền kiểm soát nội dung được hiển thị, bạn có thể viết trình xử lý nhận url làm tham số.

Khi trình xử lý được lưu trữ trong SSL, trình xử lý có thể tìm nạp html và truyền lại trình duyệt thông qua SSL. có hiệu lực hoạt động như một proxy nhỏ cho bạn.

Tôi đã thực hiện việc này cho một số dự án trong quá khứ để truy cập các tệp từ bên trong mạng mà không hiển thị chính mạng thực.

sử dụng thông tin ở đây: http://www.csharp-station.com/HowTo/HttpWebFetch.aspx bạn có thể dễ dàng thích ứng với nó để có một tham số (url thực tế mà bạn muốn lấy) ...

như vậy trong trang kết xuất của bạn, bạn sẽ gọi https://my.domain.com/pages/HttpWebFetch.aspx?url=http://ads.google.com/ các HttpWebFetch.aspx sau đó sẽ truy xuất và chuyển tiếp nội dung trang qua https do đó loại bỏ các cảnh báo an toàn/không an toàn.

+0

thú vị ... bạn có tham chiếu đến cách tiếp cận này không? Bạn có mẫu mã nào không? Điều này có được thực hiện qua javascript không? – Herman

+0

@Mauro: Câu trả lời của bạn sẽ biến trang web của bạn thành proxy mở. Tôi nghĩ bạn sẽ phải tìm một giải pháp tốt hơn là chỉ cần chuyển URL dưới dạng tham số. Tuy nhiên, ngoài lỗ hổng đó, ý tưởng có giá trị :-) – scraimer

+0

@Scraimer, có thể, rõ ràng là một số vấn đề bảo mật cần xem xét, ví dụ, bạn có thể lưu trữ url trong tệp cấu hình, mã hóa nó, không vượt qua thực tế url nhưng tham chiếu/id của url, v.v. Tôi đã sử dụng URL làm thông số để đơn giản. – Mauro

0

Sau khi thay đổi tất cả http: // thành https: // (hoặc tương đối) của tôi, tôi vẫn gặp sự cố này, cuối cùng tôi nhận ra đó là do bộ nhớ đệm. Tôi đã làm mới bộ nhớ cache của trình duyệt và điều đó vẫn ổn. Ngoài ra, có vẻ như liên kết của bạn (a href = anything) có thể là http, điều này có thể hiển nhiên nhất nhưng tôi không chắc chắn lúc đầu :)

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