Vâng, khi bạn mở một trang web, trang web có thể chỉ đạo trình duyệt thực hiện tất cả các loại thay mặt. Trong trường hợp đơn giản nhất, nó sẽ chỉ gửi văn bản và hình ảnh được hiển thị, nhưng nó cũng có thể gửi các chương trình nhỏ mà trình duyệt sẽ chạy (trong JavaScript, trình duyệt có tích hợp sẵn hoặc sử dụng plugin trình duyệt như Java hoặc Flash) .
Về nguyên tắc, việc bị lây nhiễm chỉ từ việc truy cập một trang web là không thể:
Mặc dù các trình duyệt sẽ thực thi các chương trình thay mặt cho các trang web bạn truy cập, các chương trình này bị hạn chế cẩn thận để chúng chỉ có thể làm những việc "vô hại". Từ JavaScript, ví dụ bạn có thể thay đổi trang mà JavaScript thuộc về (vì cả hai đều xuất phát từ cùng một trang web, không thể có hại), nhưng JavaScript không thể thay đổi một trang từ một trang web khác (vì vậy một trang web nhếch nhác không thể thay đổi hiển thị ngân hàng tại nhà) và nó có thể không truy cập trực tiếp vào các tệp trên máy tính của bạn.
Các hạn chế tương tự tồn tại đối với hầu hết các plugin (ít nhất là đối với Java và Flash). Điều này thường được gọi là hộp cát , vì mã chủ yếu nằm trong một hộp riêng, tách biệt với máy tính mà nó chạy. Cụ thể, nó không thể đọc các tệp trên đĩa cứng của bạn hoặc khởi động các chương trình cho bạn, như các chương trình "thông thường" đang chạy trên máy tính của bạn có thể.
Bây giờ, điều là: trong khi về nguyên tắc bạn an toàn, trong thực tế, bạn có thể không. Lý do là hệ thống hộp cát, giống như tất cả các chương trình, có lỗi. Đôi khi những lỗi này cho phép một chương trình "phá vỡ" hộp cát và lừa trình duyệt hoặc plugin để làm những việc không nên cho phép. Những thủ thuật này có thể khá phức tạp.
Ví dụ:
- Giống như các chương trình thông thường, việc triển khai trình duyệt hoặc plugin có thể có lỗi tràn bộ đệm, có thể cho phép một trang web chạy mã được chế tạo đặc biệt bằng cách gửi nó đến trình duyệt làm đầu vào.
- Có một lỗ hổng trong các phiên bản cũ của plugin Java của Sun đối với hộp cát. Hộp cát không được phép (và vẫn không cho phép) truy cập vào tất cả các hàm Java có thể cho phép chương trình gây thiệt hại, chẳng hạn như đọc hoặc xóa các tệp cục bộ. Tuy nhiên, trong khi hộp cát đã chặn chính xác quyền truy cập vào các hàm này từ một applet Java, các trình duyệt cũng cho phép truy cập gián tiếp vào các hàm này từ JavaScript (thông qua một kỹ thuật gọi là "phản chiếu"). "Cửa hậu" này đã không được các nhà phát triển xem xét đầy đủ và cho phép bỏ qua các hạn chế về hộp cát, phá vỡ hộp cát. Xem https://klikki.fi/adv/javaplugin.html để biết chi tiết.
Thật không may, đã có một số lỗ hổng trong các hộp cát của JavaScript, Java và Flash, chỉ để đặt tên cho một số. Đây vẫn là một cuộc đua giữa các tin tặc độc hại phát hiện ra các lỗ hổng này để khai thác chúng, và các tin tặc và nhà phát triển giỏi, những người phát hiện và sửa chúng. Thông thường, chúng được sửa chữa nhanh chóng, nhưng đôi khi có một cửa sổ dễ bị tổn thương.
BTW: Sandbox là lý do một số applet Java bật lên cảnh báo "Bạn có tin tưởng applet này không" khi khởi chạy: Những applet này yêu cầu bạn cho chúng ra khỏi hộp cát của chúng và cho phép chúng truy cập vào máy tính của bạn. Điều này đôi khi là cần thiết, nhưng chỉ nên được cấp với lý do tốt.
PS: Lý do mà ActiveX (ít nhất là các phiên bản đầu tiên) không an toàn khủng khiếp là ActiveX không sử dụng hộp cát. Bất kỳ mã ActiveX nào từ một trang web đều có quyền truy cập đầy đủ vào hệ thống của bạn. Để công bằng, điều này (một phần) được sửa chữa trong các phiên bản sau.