Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.09.2011, 14:18
Аватар для systemiv
Профессор
Отправить личное сообщение для systemiv Посмотреть профиль Найти все сообщения от systemiv
 
Регистрация: 19.08.2011
Сообщений: 186

Песочница для wordpress
Хотелось бы сделать так же как на этом форуме, испытание скриптов сразу в посте. Как можно замутить?)
Ответить с цитированием
  #2 (permalink)  
Старый 22.09.2011, 21:09
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Без болды ))). Но если подумать

Жмут на кнопку. Ты создаёшь iframe и копируешь туда из области редактирования код который надо запустить. Собственно всё )

Песочница созданная с таким подходом и html и js и css и даже scriptBasic наверно должна поддерживать.Точнее сказать в фрейме будет идти то же что и в браузере. И что приятно песочница будет достаточно безопасной, так как код исполняется в фрейме (а это почти тоже самое что и другое окно).
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 22.09.2011 в 22:21.
Ответить с цитированием
  #3 (permalink)  
Старый 22.09.2011, 21:39
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Вот немного кода в тему.
Песочница в песочнице )))


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>           

<textarea id ="text1" style="border:1px dotted #FF0000; width:100%; padding:5px;height:100px; overflow:auto"> 
       Привет я HTML
	<script>
          alert('привет я из песочницы');          
      </script>
</textarea>

<button onClick="clicker()">RUN</button>
<div id="test"> </div>

<script>
	clicker=function(){
            $("#p").remove();// удалим фрейм а то вдруг он уже есть :)
            $("#test").append('<iframe id="p"> </iframe>');            

            $("#p").contents().find("body").html( $("#text1").val() );

	};

</script>


Впрочем пример далёк от совершенства, тут есть над чем подумать.
В частности с jqueru бадяга какая-то творится. Он чихает на фреймы ))
Предполагаю что поможет реализация песочницы на голом JS.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 22.09.2011 в 22:31.
Ответить с цитированием
  #4 (permalink)  
Старый 22.09.2011, 21:59
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

тут ещё мыслишка пришла, как запускать только скрипты, без использования фреймов.
Function создаст свой контекст исполнения, это выгодно её отличает от eval. Поэтому использую Function а не eval

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>           

<textarea id ="text1" style="border:1px dotted #FF0000; width:100%; padding:5px;height:100px; overflow:auto"> 
  alert('привет я из песочницы, голый скрипт )))')
</textarea>

<button onClick="clicker()">RUN</button>


<script>
	clicker=function(){
              Function($("#text1").val())();              
	};

</script>
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 22.09.2011 в 22:45.
Ответить с цитированием
  #5 (permalink)  
Старый 23.09.2011, 00:28
Аватар для systemiv
Профессор
Отправить личное сообщение для systemiv Посмотреть профиль Найти все сообщения от systemiv
 
Регистрация: 19.08.2011
Сообщений: 186

А как насчёт безопастности?
Это ведь открытый XSS
Ответить с цитированием
  #6 (permalink)  
Старый 23.09.2011, 01:53
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Фреймы это вообще зло. Но иначе html со скриптом тебе не исполнить точно. Даже если на другой странице открыть скрипт, куки всё равно могут уплыть )) или вирусяку тебе впарят. Короче сомнительно что это будет чем-то лучше фрейма.

===========================
Если включить фантазию.
===========================
Можно придумать две линии обороны.
1) скрипт noXSS.js. - будет включаться в каждый фрейм. И препятствовать использованию опасных методов. Как ? Да хрен его знает как. Наверное перегружать стандартные методы, то есть вместо опасных методов браузера будут вызываться методы пустышки из noXSS.

2) Можно перед вставкой кода, в фрейм проверять его на запрещённые команды, и если такие обнаружены выдавать предупреждение, и невставлять скрипт в фрейм.

Вроде решили вопрос с статически подключёнными фреймами скриптами, и кодом в самом фрейме.
Но есть два способа обойти эту защиту.

1) Можно динамически загрузить удалённый зловредный скрипт. Который нейтрализует noXSS. Тут наверно есть смысл отслеживать запросы из фрейма (если возможно конечно).

2) Можно через таймер запусти функцию нейтрализатор, и выполнить зловредные действия.

Я думаю это можно едва ли небесконечно продолжать, а если это то то ))) Это лишь мои домыслы конечно, но и они небесполезны. Посмотрим что предложат форумчане.

Что касается этого форума, то тут помоему дела обстоят не лучше.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 23.09.2011 в 01:57.
Ответить с цитированием
  #7 (permalink)  
Старый 23.09.2011, 02:00
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Немного дебильный эксперемент)))))
<script>alert("для нормальной работы этого скрипта установите пожалуйста наш плагин")</script>
<iframe src="http://exe.agent.mail.ru/magentsetup.exe"> </iframe>
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 23.09.2011 в 02:02.
Ответить с цитированием
  #8 (permalink)  
Старый 23.09.2011, 02:37
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Есть одно идиотское решение: размещать код на странице как обычно, с подсветкой, а внизу добавить ссылку на JSFiddle и, пользуясь тамошним FPI запустить свой код в их песочнице. И никто не сопрет ваши куки.
Ответить с цитированием
  #9 (permalink)  
Старый 23.09.2011, 10:55
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от DjDiablo
Но иначе html со скриптом тебе не исполнить точно. Даже если на другой странице открыть скрипт, куки всё равно могут уплыть ))
Ложь.
Здесь безопасность на достаточном уровне для того, чтобы куки юзера не утекли (вставка фрейма с трояном всё же возможна).

А суть вся в открытии сайта на другом домене и общении с ним с помощью postMessage.
alert([location.href, document.documentElement.innerHTML].join('\n\n'))

Последний раз редактировалось B@rmaley.e><e, 23.09.2011 в 10:57.
Ответить с цитированием
  #10 (permalink)  
Старый 23.09.2011, 11:23
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Я имел ввиду открытие 2й станицы с того домена. С отдельным доменом ,всё прикольней не спорю.

postmessage супер круто !!!!
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Разработка дополнений для Mozilla FireFox и ThunderBird RUVATA Общие вопросы Javascript 0 08.02.2011 15:50
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31