PHP Безопастность создания HTML файла

Ink-developer
На сайте с 31.01.2009
Offline
138
495


<?php
$html=$_POST["html"];
$html=preg_replace("~[^a-zа-яA-ZА-Я0-9\s\Q:<>:'.,=/;|-\E]+~","",$html);
$fopen=fopen("table.html","w+");
fwrite($fopen,$html);
fclose($fopen);
?>

В переменную $html попадает HTML табличка со страницы но т.к. запрос легко подделать, возникает вопрос безопасно ли оставлять те символы которые я не вырезал функцией preg_replace.

Все это с учетом что файл будет доступен по HTTP

Есть ли тут угроза?

.

спустя 5 мин :)

Как я сейчас понимаю в эту страницу минимум можно будет вставить JavaScript ? Как защититься?

Достаточно ли будет блокировать создание файла если в тексте присутствует сочетание символов script ?

YDoron
На сайте с 25.10.2005
Offline
182
#1

Тут ещё надо ограничить размер строки, чтобы избежать возможную флуд-атаку.

А что если в переменной html будет спрятан в коментариях специальный пароль, обнаружив который можно будет "доверять" содержимому. Тоесть вместо того, чтобы исключать символы, наоборот будем искать специальный ключ говорящий об верном источнике переменной. Потом в php этот ключ вырезается.

настраиваю Linux сервера, правлю баги, пишу фичи под Wordpress и Laravel
Ink-developer
На сайте с 31.01.2009
Offline
138
#2

Дело в том что табличка берется со страницы Яваскриптом и посылается XMLHttpRequest в скрипт, так что в ней ни чего нельзя спрятать ибо пользователь все может увидеть что в ней есть.

Какие у кого еще есть размышления?

[Удален]
#3

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

Ink-developer
На сайте с 31.01.2009
Offline
138
#4
nikitian:
Для вырезания неугодных тегов пользуюсь таким решением, полностью доволен.

Если я правильно понял бегло изучив ссылку то результатом использования предлагаемого решения будет вырезание всех возможных скриптов и т.п. оставив в переменной голый HTML?

[Удален]
#5
Ink-developer:
Если я правильно понял бегло изучив ссылку то результатом использования предлагаемого решения будет вырезание всех возможных скриптов и т.п. оставив в переменной голый HTML?

Почти. Вы задаёте какие теги разрешены. Всё остальное будет удалено. В том числе и запрещённые обработчики inline, например onclick, onmousemove, etc... Именно для очистки данных от визивига и использую.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий