Что ж, когда вы открываете веб-сайт, веб-сайт может указывать браузеру делать все от его имени. В простейшем случае он просто отправляет текст и изображения для отображения, но также может отправлять небольшие программы, которые будут запускаться браузером (в JavaScript, который встроен в браузеры, или с использованием плагина браузера, такого как Java или Flash). ,
В принципе, заразиться только от посещения сайта должно быть невозможно:
Хотя браузеры будут запускать программы от имени посещаемых вами веб-сайтов, эти программы строго ограничены, поэтому они могут выполнять только «безвредные» действия. С помощью JavaScript вы можете, например, изменить страницу, к которой принадлежит JavaScript (так как оба исходят с одного и того же сайта, не может быть никакого вреда), но JavaScript не может изменить страницу с другого сайта (поэтому неряшливый сайт не может изменить ваш отображение домашнего банка), и он может не иметь прямого доступа к файлам на вашем компьютере.
Аналогичные ограничения существуют для большинства плагинов (по крайней мере, для Java и Flash). Обычно это называется « песочницей», поскольку код, по сути, находится в отдельной коробке, изолированной от компьютера, на котором он работает. В частности, он не может читать файлы на вашем жестком диске или запускать программы для вас, как это могут делать «обычные» программы на вашем компьютере.
Теперь дело в том, что, хотя в принципе вы в безопасности, на практике вы можете и не быть. Причина в том, что система песочницы, как и все программы, имеет ошибки. Иногда эти ошибки позволяют программе «взломать» песочницу и обмануть браузер или плагины, чтобы сделать то, что нельзя делать. Эти трюки могут быть довольно сложными.
Примеры:
- Как и в обычных программах, реализация браузера или плагина может иметь переполнение буфера, что позволяет веб-сайту запускать специально созданный код, отправляя его в браузер в качестве входных данных.
- В старых версиях Java-плагина Sun была уязвимость в отношении песочницы. Песочница запрещает (и все еще запрещает) доступ ко всем функциям Java, которые могут позволить программе наносить ущерб, такой как чтение или удаление локальных файлов. Однако, хотя песочница действительно правильно блокировала доступ к этим функциям из Java-апплета, браузеры также разрешали косвенный доступ к этим функциям из JavaScript (с помощью метода, называемого «отражение»). Этот «черный ход» не был в достаточной степени учтен разработчиками и позволял обойти ограничения песочницы, нарушив песочницу. См. Https://klikki.fi/adv/javaplugin.html для получения подробной информации.
К сожалению, было несколько уязвимостей в песочницах JavaScript, Java и Flash, и это лишь некоторые из них. Это все еще своего рода гонка между злонамеренными хакерами, которые обнаруживают эти уязвимости, чтобы использовать их, и хорошими хакерами и разработчиками, которые обнаруживают и исправляют их. Обычно они исправляются быстро, но иногда появляется окно уязвимости.
Кстати: песочница - это причина, по которой некоторые Java-апплеты при запуске выдают предупреждение «Доверяете ли вы этому апплету»? Эти апплеты просят вас выпустить их из своей песочницы и предоставить им доступ к вашему компьютеру. Это иногда необходимо, но должно предоставляться только по уважительным причинам.
PS: причина, по которой ActiveX (по крайней мере ранние версии) были настолько ужасно небезопасными, заключается в том, что ActiveX не использовал песочницу. Любой код ActiveX с веб-страницы имел полный доступ к вашей системе. Чтобы быть справедливым, это было (частично) исправлено в более поздних версиях.