30.08.2014 / 20:23 | |
Microwap Пользователь Сейчас: Offline
Имя: Alexandr Регистрация: 02.09.2012
| Хочу сделать для своего форума возможность запуска HTML JS кодов для просмотра. Что бы долго не объяснять вот примерВопрос собственно, как обезопасить это дело, что бы избежать кражи сессии и XSS |
30.08.2014 / 21:46 | |
ВитаминКО Супермодератор Сейчас: Online
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| Microwap, codepen, htmlbook?
__________________
わからない!! |
30.08.2014 / 22:42 | |
Microwap Пользователь Сейчас: Offline
Имя: Alexandr Регистрация: 02.09.2012
| Предлагаешь все это перечитать? О_о Короче говоря я уже нашел решение =) Хотя если у кого есть мысли (а еще лучше коды ), буду рад выслушать. |
30.08.2014 / 23:25 | |
Microwap Пользователь Сейчас: Offline
Имя: Alexandr Регистрация: 02.09.2012
| Собственно сделал следующим образом <button onclick="run('code');" >Run</button>
<pre id="code" style="overflow: auto;">Тут код после htmlspecialchars </pre>
<script type="text/javascript">
function run (id)
{
var
f=document.createElement("form");
f.method="post";
f.action="code.php"; // скрипрт приемник
var
i = document.createElement('input');
i.type = 'text';
i.name = 'content';
i.value = document.getElementById(id).innerHTML;
f.appendChild(i);
f.submit();
}
</script>
Код приемника (code.php) <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Пример</title>
</head><body>
<script type="text/javascript">
function run(cont){var w = open();w.document.write(cont);}
<?
$content = str_replace('<br>','',$_POST['content']);
$content = html_entity_decode($content);
$content = preg_replace('|\s+|', ' ', $content);
$content = addslashes($content);
$content = str_replace('>','\>',$content);
$content = str_replace('<','\<',$content);
echo 'var cont = "'.$content.'";';
?>
</script>
<div class="head">Запуск кода со страницы</div>
<button onclick="run(cont);" >Да</button>
<button onclick="javascript:history.go(-1);" >Нет</button>
</body>
</html>
Вот пример Только ржать не надо =) Вроде бы вполне себе безопасно. |
31.08.2014 / 00:29 | |
Microwap Пользователь Сейчас: Offline
Имя: Alexandr Регистрация: 02.09.2012
| Короче подумал еще и решил таки – НУ ЕТО НАФИГ =) хотя идея хорошая была ) |
8.08.2024 / 23:11 | |
ЕжоргийЧерчилич Пользователь Сейчас: Offline
Имя: Ежоргий Откуда: ПТЗ Регистрация: 19.05.2024
| Цитата Microwap: Собственно сделал следующим образом <button onclick="run('code');" >Run</button> <pre id="code" style="overflow: auto;">Тут
<textarea name="textarea"></textarea>
<iframe name="iframe"></iframe>
<button onclick="abc()">abc</button>
<script>
abc=()=>{
iframe.contentWindow.parent="";
iframe.contentDocument.write(textarea.value);
}
</script>
Далее всё лишнее CORS'ом ограничить, и норм Изменено ЕжоргийЧерчилич (8.08 / 23:13) (всего 2 раза) |
9.08.2024 / 18:15 | |
Tygrain Пользователь Сейчас: Offline
Имя: Александр Откуда: Днепр Регистрация: 01.07.2012
| ЕжоргийЧерчилич, в 2014 не было стрелочных функций в браузерах |
9.08.2024 / 21:57 | |
ЕжоргийЧерчилич Пользователь Сейчас: Offline
Имя: Ежоргий Откуда: ПТЗ Регистрация: 19.05.2024
| Цитата Tygrain: ЕжоргийЧерчилич, в 2014 не было стрелочных функций в браузерах Зато были обычные |