Вниз  Безопасность. Запуск кода на странице
- 30.08.2014 / 20:23
Microwap
  Пользователь

Microwap 
Сейчас: Offline
Хочу сделать для своего форума возможность запуска HTML JS кодов для просмотра.
Что бы долго не объяснять вот пример

Вопрос собственно, как обезопасить это дело, что бы избежать кражи сессии и XSS
- 30.08.2014 / 21:46
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
Microwap, codepen, htmlbook?
__________________
 わからない!!
- 30.08.2014 / 22:42
Microwap
  Пользователь

Microwap 
Сейчас: Offline
Предлагаешь все это перечитать? О_о
Короче говоря я уже нашел решение =)
Хотя если у кого есть мысли (а еще лучше коды :-D ), буду рад выслушать.
- 30.08.2014 / 23:25
Microwap
  Пользователь

Microwap 
Сейчас: Offline
Собственно сделал следующим образом
  1. <button onclick="run('code');" >Run</button>
  2. <pre id="code" style="overflow: auto;">Тут код после htmlspecialchars </pre>

  1. <script type="text/javascript">
  2. function run (id)
  3.  {    
  4.  var
  5.      f=document.createElement("form");
  6.      f.method="post";
  7.      f.action="code.php"; // скрипрт приемник
  8.  var
  9.     i = document.createElement('input');
  10.     i.type = 'text';
  11.     i.name = 'content';
  12.     i.value =  document.getElementById(id).innerHTML;
  13.     f.appendChild(i);  
  14.     f.submit();
  15.  }
  16. </script>
Код приемника (code.php)
  1. <!DOCTYPE html>
  2. <html>
  3.  <head>
  4.   <meta charset="utf-8">
  5.   <title>Пример</title>
  6. </head><body>  
  7. <script type="text/javascript">
  8. function run(cont){var w = open();w.document.write(cont);}
  9. <?
  10. $content = str_replace('<br>','',$_POST['content']);
  11. $content = html_entity_decode($content);
  12. $content = preg_replace('|\s+|', ' ', $content);
  13. $content = addslashes($content);
  14. $content = str_replace('>','\>',$content);
  15. $content = str_replace('<','\<',$content);
  16. echo 'var cont = "'.$content.'";';
  17. ?>
  18. </script>
  19. <div class="head">Запуск кода со страницы</div>
  20. <button onclick="run(cont);" >Да</button>
  21. <button onclick="javascript:history.go(-1);" >Нет</button>
  22. </body>
  23. </html>

Вот пример Только ржать не надо =)

Вроде бы вполне себе безопасно.
- 31.08.2014 / 00:29
Microwap
  Пользователь

Microwap 
Сейчас: Offline
Короче подумал еще и решил таки – НУ ЕТО НАФИГ =) хотя идея хорошая была ) :-D
Наверх  Всего сообщений: 5
Фильтровать сообщения
Поиск по теме