X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Фильтр тегов JS, PHP и HTML в форме PHP
Валериан
Валериан
Topic Starter сообщение 23.3.2010, 20:49; Ответить: Валериан
Сообщение #1


У меня есть форма с комментариями http://titanic-in-color.com/comments/index.php . Но в поле "Сообщение" можно ввести даже JS скрипты из-за чего можно подвергнуться хакерам, подскажите, как сделать так, чтобы в поле "Сообщение" можно было вводить только текст?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 23.3.2010, 21:28; Ответить: ZhukV
Сообщение #2


Здесь есть два вариатна решение:
1. Прямой запрет на ввод тегов (нужно использовать регулярные выражение)
2. Экранизировать все спец.символы и далее выводить (воспользоватся заменой найденых участков тегов).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Валериан
Валериан
Topic Starter сообщение 23.3.2010, 22:31; Ответить: Валериан
Сообщение #3


(ZhukV @ 23.3.2010, 23:28) *
Здесь есть два вариатна решение:
2. Экранизировать все спец.символы и далее выводить (воспользоватся заменой найденых участков тегов).

Что нужно для этого сделать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 23.3.2010, 22:47; Ответить: ZhukV
Сообщение #4


Вот одна из простых функций для этого:
[PHP]
function encode_html($str,$type='code'){
if($type=='code'){return htmlspecialchars($str,ENT_QUOTES);}
if($type=='encode'){
$trans=get_html_translation_table(HTML_ENTITIES,ENT_QUOTES);
$trans=array_flip($trans);;
return strtr($str, $trans);
}
}
[/PHP]

Для того, чтоб подать текст для вывода на экран как текста, а не как HTML-кода, пользуйся так:
[PHP]
$text=encode_html($_POST['text']);
echo $text;
[/PHP]
Будет выведен текст в стиле text/plain

А если ситуауия наоборот, тоесть текст перекодирован для вывода как текста, а те нужно его вывести как html-код, то делай так:
[PHP]
$text=encode_html($res,'encode');
echo $text;
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Валериан
Валериан
Topic Starter сообщение 24.3.2010, 0:22; Ответить: Валериан
Сообщение #5


(ZhukV @ 24.3.2010, 00:47) *
Вот одна из простых функций для этого:
[php]
function encode_html($str,$type='code'){
if($type=='code'){return htmlspecialchars($str,ENT_QUOTES);}
if($type=='encode'){
$trans=get_html_translation_table(HTML_ENTITIES,ENT_QUOTES);
$trans=array_flip($trans);;
return strtr($str, $trans);
}
}
[/php]

Для того, чтоб подать текст для вывода на экран как текста, а не как HTML-кода, пользуйся так:
[php]
$text=encode_html($_POST['text']);
echo $text;
[/php]
Будет выведен текст в стиле text/plain

А если ситуауия наоборот, тоесть текст перекодирован для вывода как текста, а те нужно его вывести как html-код, то делай так:
[php]
$text=encode_html($res,'encode');
echo $text;
[/php]

А куда вставлять
[php]
$text=encode_html($_POST['text']);
echo $text;
[/php]?
:)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 24.3.2010, 0:33; Ответить: ZhukV
Сообщение #6


Вот к примеру у тя есть оброботчик, который текст записывает в базу все коментарии (форма имеет тип передачи даных $_POST):
Для начала нужно вытащить текст с переменной:
[PHP]
$text=$_POST['text'];
[/PHP]
Ну далее, наверное ты понял, нам нужно ее обработать:
[PHP]
$text_write=encode_html($text);
[/PHP]
Ну и в конце просто записать в базу уже готовый код:
[PHP]
$sql="INSERT INTO table (comment) VALUES ('$text_write')";
[/PHP]
Думаю суть ты понял...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Валериан
Валериан
Topic Starter сообщение 24.3.2010, 0:41; Ответить: Валериан
Сообщение #7


Спасибо Вам большое, у меня получилось :) (ставлю Вам спасибо))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
brittvva
brittvva
сообщение 28.3.2011, 10:58; Ответить: brittvva
Сообщение #8


Почитайте здесь http://savvateev.org/blog/36/
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
B.B.
B.B.
сообщение 28.3.2011, 12:08; Ответить: B.B.
Сообщение #9


(ZhukV @ 24.3.2010, 02:33) *
$text_write=encode_html($text);

Вижу Вы хорошо разбираетесь в данной теме. Я всегда пользовался htmlspecialchars, скажите есть ли принципиальные различия между ними?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 28.3.2011, 17:07; Ответить: LifeUP
Сообщение #10


чтобы не пихали левые тэги нужно всеголиш написать:
[PHP]
$text = strip_tags ($text);
[/PHP]

И всё, все тэги будут вырезаны, если какието надо оставить то 2 параметром в скобках перечислите их
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Вёрстка HTML-писем
30 Vampler 29392 27.3.2024, 12:41
автор: Vampler
Открытая тема (нет новых ответов) Разработка/доработка сайтов Wordpress, HTML/CSS/JS
Вёрстка, перенос на WP, правки
9 malamut 3481 25.1.2024, 14:36
автор: malamut
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3415 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1243 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44916 19.7.2023, 10:03
автор: qpPeW


 



RSS Текстовая версия Сейчас: 23.4.2024, 14:32
Дизайн