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

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

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

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

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

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